Unix / Linux - Pipes and Filters
Здравствуйте, будущие маги Unix/Linux! Сегодня мы отправимся в увлекательное путешествие в мир труб и фильтров. Не беспокойтесь, если вы новички в программировании - я буду вести вас шаг за шагом, как я делал это для countless студентов за годы преподавания. Погружаемся!

Что такое трубы и фильтры?
Прежде чем мы углубимся в детали, давайте поймем, что такое трубы и фильтры. Представьте, что вы находитесь на кухне и готовите美味的ный обед. У вас есть разные инструменты, которые выполняют каждую конкретную задачу - нож для резки, блендер для смешивания, сито для... да, для процеживания! В Unix/Linux трубы и фильтры работают аналогично.
- Фильтры - это команды, которые принимают ввод, обрабатывают его и производят вывод.
- Трубы - это " трубопровод ", который connects эти фильтры, позволяя данным течь от одной команды к другой.
Вместе они образуют мощную систему для обработки и манипулирования данными. Теперь давайте посмотрим на некоторые из самых распространенных и полезных команд.
Команда grep
Что такое grep?
grep означает "Global Regular Expression Print". Это супермощный инструмент поиска, который помогает вам находить конкретные шаблоны в тексте.
Основное использование
Вот базовая синтаксис:
grep [опции] шаблон [файл...]
Давайте начнем с простого примера. Предположим, у нас есть файл叫做 fruits.txt со следующим содержимым:
apple
banana
cherry
date
elderberry
fig
grape
Если мы хотим найти все фрукты, содержащие букву 'a', мы можем использовать:
grep 'a' fruits.txt
Это выведет:
apple
banana
grape
Полезные опции
Вот некоторые удобные опции для grep:
| Опция | Описание |
|---|---|
| -i | Игнорировать регистр |
| -v | Инвертировать соответствие (показывать строки, которые не соответствуют) |
| -n | Показывать номера строк |
| -c | Подсчитывать соответствующие строки |
Давайте попробуем несколько:
grep -i 'A' fruits.txt # Найти 'a' или 'A'
grep -v 'a' fruits.txt # Найти строки без 'a'
grep -n 'e' fruits.txt # Показать номера строк для строк с 'e'
grep -c 'r' fruits.txt # Подсчитать строки, содержащие 'r'
Команда sort
Что такое sort?
sort делает именно то, что вы ожидаете - он排序 веще! Это как полезныйассистент, который может быстро упорядочить ваши данные по алфавиту или числовому значению.
Основное использование
Базовая синтаксис:
sort [опции] [файл...]
Используя наш файл fruits.txt:
sort fruits.txt
Это выведет:
apple
banana
cherry
date
elderberry
fig
grape
Полезные опции
Вот некоторые常见的 опции для sort:
| Опция | Описание |
|---|---|
| -r | Обратный порядок |
| -n | Сортировать числово |
| -u | Удалить дубликаты |
| -k | Сортировать по конкретному полю |
Давайте попробуем это:
sort -r fruits.txt # Обратный алфавитный порядок
Теперь давайте создадим файл叫做 numbers.txt с некоторыми числами:
5
2
8
1
3
Мы можем отсортировать их числово:
sort -n numbers.txt
Команды pg и more
Что такое pg и more?
pg и more - это программы для чтения. Они как вежливые официанты, которые подают ваши данные одну страницу за раз, вместо того чтобы вываливать их все сразу.
Основное использование
Для more:
more [опции] [файл...]
Для pg:
pg [опции] [файл...]
Давайте попробуем more с более длинным файлом. Создадим long_text.txt со следующим содержимым:
more long_text.txt
Это покажет содержимое одну страницу за раз. Нажмите пробел, чтобы увидеть следующую страницу, или 'q', чтобы выйти.
pg работает аналогично, но предлагает больше возможностей:
pg long_text.txt
С pg вы можете использовать ':n' для перехода на следующую страницу, ':p' для предыдущей страницы и '/pattern' для поиска текста.
Использование всего вместе: Мощь труб
Теперь для интересной части - combining эти команды с трубами! Символ трубы '|' connect вывод одной команды к вводу другой.
Давайте создадим файл叫做 employees.txt с следующим содержимым:
Alice,Sales,50000
Bob,Marketing,45000
Charlie,Engineering,60000
David,Sales,55000
Eve,Marketing,48000
Frank,Engineering,62000
Теперь давайте используем трубы для чуда:
grep 'Sales' employees.txt | sort -k3 -nr
Эта команда делает две вещи:
-
grep 'Sales' employees.txtнаходит все строки, содержащие 'Sales' - Вывод затем передается в
sort -k3 -nr, который сортирует числово (-n) в обратном порядке (-r) по третьему полю (-k3), что является зарплатой.
Результат:
David,Sales,55000
Alice,Sales,50000
Круто, правда? Мы только что отфильтровали наши данные и отсортировали их в один шаг!
Заключение
Вот и все,folks! Мы прошли через страну труб и фильтров, встретили мощный grep, аккуратный sort, и терпеливые more и pg. Помните, практика makes perfect. Попробуйте combine эти команды по-разному, и вы скоро станете мастером Unix/Linux pipe!
Счастливого кодирования, и пусть ваши трубы всегда будут чистыми, а фильтры всегда будут чистыми!
Credits: Image by storyset
