Як сортувати за допомогою команд grep і сортування?


15

Я хотів би створити відсортований список усіх служб 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(і, зрештою, переадресація виграла, і записали несортований вихід у свій файл).


Дуже дякую, я думав, що поки я введу команду сортування де завгодно, вона все одно спрацює.
користувач72510

1
@ user72510 Трубопроводи обробляються в порядку, зліва направо. Це насправді корисно, наприклад, якщо ви хочете перших п'яти рядків відсортованого виводу, ви могли б зробити grep tcp /etc/services | sort | head -n 5. Важливо sortзробити це до початку head, інакше ви не отримаєте потрібні лінії.
дероберт

Дякую за пояснення. Я проходжу заняття в Інтернеті, тому я сам викладаю. Якщо додати, що мені 40, це повільне навчання.
користувач72510
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.