Unix / Linux - Pipes and Filters

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

Unix / Linux - Pipes & Filters

Что такое трубы и фильтры?

Прежде чем мы углубимся в детали, давайте поймем, что такое трубы и фильтры. Представьте, что вы находитесь на кухне и готовите美味的ный обед. У вас есть разные инструменты, которые выполняют каждую конкретную задачу - нож для резки, блендер для смешивания, сито для... да, для процеживания! В 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

Эта команда делает две вещи:

  1. grep 'Sales' employees.txt находит все строки, содержащие 'Sales'
  2. Вывод затем передается в 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