Как сортировать, используя команды grep и sort?


14

Я хотел бы создать отсортированный список всех служб TCP, найденных в файле /etc/services, направить вывод команды grep tcp /etc/servicesв команду sort, а затем перенаправить вывод этого канала в файл ~/pipelab.txt.

Я получаю сообщение об ошибке, что мой вывод неверен, и я не знаю, почему.

Это то, что я пробовал в прошлом:

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

Ответы:


11

> ~/pipelab.txtочевидно, принадлежит команде на той же стороне оператора трубопровода |. Т.е. вы перенаправляете grepвывод в файл вместо того, чтобы передать его в sort:

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

21

Вы пытаетесь как перенаправить вывод grepв файл, так и направить его в sort. Вы не можете сделать это, по крайней мере, не так.

Вместо этого вы действительно хотите кормить его сортировкой:

grep tcp /etc/services | sort

и затем вы хотите перенаправить отсортированный вывод (то есть, что выходит из сортировки) в файл, поэтому вы помещаете перенаправление после сортировки:

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

И каналы, и перенаправления работают, изменяя направление вывода команды. У вас было двое из них, которые боролись за выходные данные grep(и в итоге перенаправление победило, и записали несортированный вывод в ваш файл).


Большое спасибо, я думал, пока я помещаю команду сортировки где угодно, она все еще будет работать.
user72510

1
@ user72510 Трубопроводы обрабатываются по порядку, слева направо. Это действительно полезно, например, если вы хотите первые пять строк отсортированного вывода, вы можете сделать это grep tcp /etc/services | sort | head -n 5. Важно, чтобы это sortбыло сделано до head, или вы не получили бы строки, которые вы хотите.
Дероберт

Спасибо, что объяснили это. Я беру урок онлайн, поэтому я учу себя. К тому же, мне 40, это медленное обучение.
user72510
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.