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做了一个测试,粘贴了这个测试。编辑。。。