【发布时间】:2016-02-14 13:17:15
【问题描述】:
我正在尝试使用sort 命令对以空格分隔的字符串中的整数进行排序。例如8 6 5 7 9 56 -20 - 10。我在标准输出上收到字符串。我尝试了所有这些但没有任何效果:
sort -t' '
sort -t ' '
sort -t " "
sort -t" "
sort -t=" "
【问题讨论】:
-
来自
man sort: "排序行的文本"
我正在尝试使用sort 命令对以空格分隔的字符串中的整数进行排序。例如8 6 5 7 9 56 -20 - 10。我在标准输出上收到字符串。我尝试了所有这些但没有任何效果:
sort -t' '
sort -t ' '
sort -t " "
sort -t" "
sort -t=" "
【问题讨论】:
man sort: "排序行的文本"
echo "8 6 5 7 9 56 -20 - 10" | tr ' ' '\n' | sort -n
Sort 只能对行进行排序。
【讨论】:
您可以先将字符串读入以空格为分隔符的数组,然后使用sort 进行进程替换:
s='8 6 5 7 9 56 -20 - 10'
read -ra arr <<< "$s"
sort -n <(printf "%s\n" "${arr[@]}")
输出:
-20
-10
5
6
7
8
9
56
再次将输出存储在字符串中:
read -r str < <(sort -n <(printf "%s\n" "${arr[@]}") | tr '\n' ' ')
并检查输出:
declare -p str
declare -- str="-20 -10 5 6 7 8 9 56"
【讨论】: