如何使用 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

相關內容