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

use*_*510 21 shell pipe

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

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

这是我上次尝试过的:

grep tcp /etc/services > ~/pipelab.txt | sort
Run Code Online (Sandbox Code Playgroud)

der*_*ert 26

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

相反,你真的只想喂它来排序:

grep tcp /etc/services | sort
Run Code Online (Sandbox Code Playgroud)

然后你想将排序后的输出(即排序后的结果)重定向到一个文件,所以你把重定向放在排序之后:

grep tcp /etc/services | sort > ~/pipelab.txt
Run Code Online (Sandbox Code Playgroud)

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


Hau*_*ing 13

> ~/pipelab.txt显然是属于指挥同侧的管道运营商|。即您将grep输出重定向到文件而不是将其管道化sort:

grep tcp /etc/services | sort > ~/pipelab.txt
Run Code Online (Sandbox Code Playgroud)