如何使用 grep 和 sort 命令进行排序?

如何使用 grep 和 sort 命令进行排序?

我想创建在文件中找到的所有 TCP 服务的排序列表/etc/services,将命令的输出通过管道传输grep tcp /etc/services到命令中sort,然后将该管道的输出重定向到文件中~/pipelab.txt

我不断收到一条错误消息,表明我的输出错误,但我不知道为什么。

这是我上次尝试过的:

grep tcp /etc/services > ~/pipelab.txt | sort

答案1

您正在尝试将输出重定向grep到文件通过管道将其传输到sort.你不能那样做,至少不能那样做。

相反,您实际上只想将其提供给排序:

grep tcp /etc/services | sort

然后你想重定向已排序输出(即,排序结果)到文件,因此您将重定向放在排序之后:

grep tcp /etc/services | sort > ~/pipelab.txt

管道和重定向都是通过更改命令输出的位置来工作的。其中两个人在争夺输出grep(最终,重定向获胜,并将未排序的输出写入您的文件)。

答案2

> ~/pipelab.txt显然属于管道操作符同一侧的命令|。即,您将grep输出重定向到文件,而不是通过管道将其输入sort

grep tcp /etc/services | sort > ~/pipelab.txt

相关内容