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