标题概括起来。

$ 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处理,也许扩大转义序列,或崩溃一切一行)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top