Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
整数的KornShell排序数组_Shell_Sorting_Unix_Scripting_Ksh - Fatal编程技术网

整数的KornShell排序数组

整数的KornShell排序数组,shell,sorting,unix,scripting,ksh,Shell,Sorting,Unix,Scripting,Ksh,KornShell(ksh)脚本中是否有对整数数组排序的命令?在这个特定的例子中,我对简单而不是效率感兴趣。例如,如果变量$UNSORTED_ARR包含值“100911、111228、090822”,并且我希望将结果存储在$SORTED_ARR中,那么它实际上是索引数组还是字符串中的列表 数组: UNSORTED_ARR=(100911 111228 090822) SORTED_ARR=($(printf "%s\n" ${UNSORTED_ARR[@]} | sort -n)) 字符串:

KornShell(ksh)脚本中是否有对整数数组排序的命令?在这个特定的例子中,我对简单而不是效率感兴趣。例如,如果变量$UNSORTED_ARR包含值“100911、111228、090822”,并且我希望将结果存储在$SORTED_ARR中,那么它实际上是索引数组还是字符串中的列表

数组:

UNSORTED_ARR=(100911 111228 090822)
SORTED_ARR=($(printf "%s\n" ${UNSORTED_ARR[@]} | sort -n))
字符串:

UNSORTED_ARR="100911, 111228, 090822"
SORTED_ARR=$(IFS=, printf "%s\n" ${UNSORTED_ARR[@]} | sort -n | sed ':a;$s/\n/,/g;N;ba')
还有其他几种方法可以做到这一点,但原理是一样的

下面是使用不同技术的字符串的另一种方法:

set -s -- ${UNSORTED_ARR//,}
SORTED_ARR=$@
SORTED_ARR=${SORTED_ARR// /, }
请注意,这是一种词典排序,因此当数字没有前导零时,您会看到这种情况:

$ set -s -- 10 2 1 100 20
$ echo $@
1 10 100 2 20
如果我把它取出来,它会工作,但我不能循环它(因为现在是字符串列表)——pws5068 Mar 4'11 21:01

这样做:

\# create sorted array
set **-s** -A $@ 

这是一个索引字符串数组。。所以我相信第一个例子。唯一的问题是,我得到了一个“意外的”(对于(第一个版本)排序的ARR赋值。如果我把它取出来,它会工作,但我不能循环通过它(因为它现在是一个字符串列表)明白了!欺骗了:set-a SORTED ARR$(printf”%s\n“${UNSORTED ARR[@]}sort-n)同样的最新答案。因为当前的答案对我不起作用。