Linux操作系统:GNU的排序不排序序列
题
标题概括起来。
$ echo `seq 0 10` `seq 5 15` | sort -n
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
为什么不这项工作?
即使我不使用seq
:
echo '0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15' | sort -n
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
和甚至开沟echo
直接:
$ echo '0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15' > numbers
$ sort -n numbers
0 1 2 3 4 5 6 7 8 9 10 5 6 7 8 9 10 11 12 13 14 15
解决方案
sort(1)
各种线。你必须分析空格分隔数据自己:
echo `seq 0 10` `seq 5 15` | tr " " "\n" | sort -n
其他提示
由于需要用于sort
换行符:
$ echo `seq 0 10` `seq 5 15` | tr " " "\\n" | sort -n | tr "\\n" " "; echo ""
0 1 2 3 4 5 5 6 6 7 7 8 8 9 9 10 10 11 12 13 14 15
$
您有输入的单行。没有什么可以进行排序。
在命令键入它导致数是全部通过在一行到sort
的序列中这不是你想要的。只是直接传递seq
的输出以sort
:
(seq 0 10; seq 5 15) | sort -n
对了,你刚刚发现的,构建
echo `command`
不一般的做你所期望的,是多余的为你实际期望:它告诉shell捕捉command
的输出,并把它传递给echo
,再次产生它作为输出。只是让命令的输出经过直接的(除非您真的的意思是将其交由echo
处理,也许扩大转义序列,或崩溃一切一行)。
不隶属于 StackOverflow