Bash Linux:GNU排序不按顺序排序
标题概括了这一点Bash Linux:GNU排序不按顺序排序,bash,sorting,gnu-sort,Bash,Sorting,Gnu Sort,标题概括了这一点 $ 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 `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
排序(1)
对行进行排序。您必须自己解析以空格分隔的数据:
echo `seq 0 10` `seq 5 15` | tr " " "\n" | sort -n
排序(1)
对行进行排序。您必须自己解析以空格分隔的数据:
echo `seq 0 10` `seq 5 15` | tr " " "\n" | sort -n
您只有一行输入。没有要排序的内容。您只有一行输入。没有要排序的内容。因为排序需要换行符:
$ 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
$
(seq 0 10; seq 5 15) | sort -n
因为排序需要换行符:
$ 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
$
(seq 0 10; seq 5 15) | sort -n
您键入的命令将导致一行中的数字序列全部传递给
sort
。那不是你想要的。只需将seq
的输出直接传递到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
$
(seq 0 10; seq 5 15) | sort -n
顺便说一下,正如你刚刚发现的,结构
echo `command`
通常不会执行您期望的操作,并且对于您实际期望的操作是多余的:它告诉shell捕获
命令的输出
,并将其传递给echo
,后者再次将其作为输出生成。只需直接执行命令的输出(除非真的意味着让echo
处理它,或者展开转义序列,或者将所有内容折叠到一行)。键入命令时,数字序列将全部传递到一行中的sort
。那不是你想要的。只需将seq
的输出直接传递到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
$
(seq 0 10; seq 5 15) | sort -n
顺便说一下,正如你刚刚发现的,结构
echo `command`
通常不会执行您期望的操作,并且对于您实际期望的操作是多余的:它告诉shell捕获
命令的输出
,并将其传递给echo
,后者再次将其作为输出生成。只需让命令的输出直接通过即可(除非真的意味着让echo
处理它,可能是扩展转义序列,或者将所有内容折叠到一行)。注意,我不能用seq(1)
(未安装在OS X上)来测试这一点,但这适用于echo(1)
对我来说很好。请注意,我不能用seq(1)
(未安装在OS X上)来测试这一点,但这对echo(1)
对我来说很好。好吧,从技术上讲,有一些东西需要排序,但它简单且快速:-)好吧,从技术上讲,有一些东西需要排序,但它很简单,速度快得让人目瞪口呆:-)“并没有达到你的预期”-实际上它完全达到了我的预期。我只是不记得排序行的sort
:DI指的是构造的一般用法。例如,您通常不希望将所有文本折叠成一行,也不希望命令的输出解释特殊字符(例如,考虑安全问题)。编辑后添加了“通常”,虽然“不会做你期望的事”-实际上它确实做了我期望它做的事。我只是不记得排序行的sort
:DI指的是构造的一般用法。例如,您通常不希望将所有文本折叠成一行,也不希望命令的输出解释特殊字符(例如,考虑安全问题)。但编辑后添加了“通常”。