Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
Arrays 在bash中按数字排序数组并放入另一个数组_Arrays_Bash_Sorting_Numbers - Fatal编程技术网

Arrays 在bash中按数字排序数组并放入另一个数组

Arrays 在bash中按数字排序数组并放入另一个数组,arrays,bash,sorting,numbers,Arrays,Bash,Sorting,Numbers,我想对一个数字数组进行排序,然后放入另一个数组。下面的代码是我发现的 IFS=$'\n' sorted=($(sort <<<"${array[*]}")) unset IFS echo "${sorted[*]}" 如何将其按编号排序?而不修改IFS $ p=(1 10 1000 111 12 200 5) $ sorted_p=($(tr ' ' '\n' <<<"${p[@]}" | sort -n)) $ echo "${sorted_p[@]}"

我想对一个数字数组进行排序,然后放入另一个数组。下面的代码是我发现的

IFS=$'\n' sorted=($(sort <<<"${array[*]}"))
unset IFS
echo "${sorted[*]}"

如何将其按编号排序?

而不修改
IFS

$ p=(1 10 1000 111 12 200 5)
$ sorted_p=($(tr ' ' '\n' <<<"${p[@]}" | sort -n))
$ echo "${sorted_p[@]}"
1 5 10 12 111 200 1000
$p=(110011112005)

$sorted_p=($(tr''\n'而不修改
IFS

$ p=(1 10 1000 111 12 200 5)
$ sorted_p=($(tr ' ' '\n' <<<"${p[@]}" | sort -n))
$ echo "${sorted_p[@]}"
1 5 10 12 111 200 1000
$p=(110011112005)

$sorted_p=($(tr'\n'此代码使用
\0
作为分隔符,因此甚至适用于对非数字数组进行排序:

arr=(4 2 3 1 5)
sorted=()

while IFS= read -r -d '' item; do
    sorted+=("$item")
done < <(printf '%s\0' "${arr[@]}" | sort -zn)

此代码使用
\0
作为分隔符,因此甚至适用于对非数字数组进行排序:

arr=(4 2 3 1 5)
sorted=()

while IFS= read -r -d '' item; do
    sorted+=("$item")
done < <(printf '%s\0' "${arr[@]}" | sort -zn)

只需使用
sort-n
只需使用
sort-n
第二个
tr
不是真的需要:)是的。我当时用
echo
做了一个测试,然后粘贴了。编辑过……第二个
tr
不是真的需要:)是的。我当时用echo做了一个测试,粘贴了这个测试。编辑。。。