Как выполнить сортировку с помощью команд 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

Связанный контент