Команда Pipe, Grep і Sort у Linux/Unix із прикладами
⚡ Розумний підсумок
Команди pipe, grep та sort у Linux та Unix ланцюжок та фільтрують текст: pipe передає вивід однієї команди в наступну, grep шукає шаблони, а sort упорядковує рядки, тоді як фільтри перетворюють дані між ними.

Канали, grep та сортування є одними з найбільш використовуваних інструментів на Linux командного рядка, оскільки вони дозволяють об'єднувати невеликі команди в один потужний робочий процес. На цій сторінці пояснюється кожна з них із практичними прикладами, а потім показано, як фільтри пов'язують їх між собою.
Що таке труба в Linux?
Канал (pipe) — це команда в Linux, яка дозволяє використовувати дві або більше команд таким чином, що вивід однієї команди слугує вхідними даними для наступної. Коротше кажучи, вивід кожного процесу безпосередньо надходить як вхідні дані до наступного, подібно до конвеєра. Символ '|' позначає канал.
Конвеєри допомагають об'єднати дві або більше команд одночасно та виконувати їх послідовно. Ви можете використовувати потужні команди, які виконують складні завдання миттєво.
Давайте розберемося в цьому на прикладі.
Коли ви використовуєте команду «cat» для перегляду файлу, який охоплює кілька сторінок, запит швидко переходить на останню сторінку файлу, і ви не бачите вмісту посередині.
Щоб уникнути цього, ви можете перенаправити вивід команди 'cat' до 'less', що покаже вам лише одну довжину прокручування контенту за раз.
cat filename | less
Ілюстрація прояснить це. На діаграмі нижче показано, як канал передає вивід однієї команди в наступну.
команди «pg» і «more».
Замість «less» можна також використовувати команду pg або more:
cat Filename | pg
or
cat Filename | more
Потім ви можете переглянути файл по частинах та прокрутити вниз, просто натиснувши клавішу Enter. На скріншоті нижче показано файл, розгорнутий за допомогою команди more.
Команда grep
Припустимо, ви хочете знайти певну інформацію, таку як поштовий індекс, у текстовому файлі.
Ви можете вручну переглянути вміст самостійно, щоб tracінформацію. Кращим варіантом є використання GREP команда. Вона сканує документ на наявність потрібної інформації та представляє результат у потрібному вам форматі.
Синтаксис:
grep search_string
Давайте розглянемо це в дії. На скріншоті нижче показано результат пошуку.
Тут команда grep виконала пошук у файлі 'sample' рядків 'Apple' та 'Eat'. З цією командою можна використовувати такі параметри.
| варіант | функція |
|---|---|
| -v | Показує всі рядки, які не відповідають шуканому рядку |
| -c | Відображає лише кількість відповідних рядків |
| -n | Показує відповідний рядок і його номер |
| -i | Збігається як з великими, так і з малими регістрами |
| -l | Показує лише назву файлу з рядком |
Давайте спробуємо використати опцію '-i' для того ж файлу, що й вище. На скріншоті нижче показано результат без урахування регістру.
Використовуючи опцію '-i', grep відфільтрував рядок 'a' (без урахування регістру) з усіх рядків.
Команда сортування
Ця команда допомагає сортувати вміст файлу в алфавітному порядку.
Синтаксис цієї команди такий:
sort Filename
Розглянемо вміст файлу, показаного нижче за допомогою cat.
Виконання команди sort упорядковує ці рядки в алфавітному порядку, як показано нижче.
Також існують розширення цієї команди, і вони перелічені нижче.
| варіант | функція |
|---|---|
| -r | Reverseсортування |
| -n | Сортує чисельно |
| -f | Сортування без урахування регістру |
У наведеному нижче прикладі показано зворотне сортування вмісту у файлі "abc".
Що таке фільтр?
У Linux є багато команд фільтрації, таких як awk, grep, sed, spell та wc. Фільтр приймає вхідні дані від однієї команди, виконує певну обробку та видає результат.
Коли ви передаєте дві команди по конвеєру, «фільтрований» вивід першої команди передається наступній. На діаграмі нижче показано, як фільтр вписується в конвеєр.
Давайте розберемося з цим за допомогою прикладу. У нас є наступний файл 'sample', показаний за допомогою cat нижче.
Ми хочемо виділити лише ті рядки, які не містять символу 'a', але результат має бути у зворотному порядку. Для цього можна використовувати наступний синтаксис:
cat sample | grep -v a | sort -r
Давайте подивимося на результат, показаний на скріншоті нижче.







.png)
.png)

