Фильтры

Когда программа выполняет операции с вводом и записывает результат в стандартный вывод, она называется фильтром. Одним из наиболее распространенных видов использования фильтров является использование по реогранизованному выводу. Ниже мы обсудим несколько наиболее важных фильтров.

Дополнительная информация о grep

Как мы уже видели в разделе "Команда grep"grep сканирует строку вывода через строку поиска по определенным шаблонам. Все строки, содержащие шаблон будут распечатаны на стандартном выводе. Такое поведение может быть отменено путем использования опции -v.

Некоторые примеры: допустим, мы хотим знать, какие файлы в определенной директории были изменены в феврале:

jenny:~> ls -la | grep Feb

Команда grep, как и большинство команд, учитывает регистр. Используйте опцию -i, чтобы не учитывать различие между верхним и нижним регистром. Также доступны многие расширения GNU, например --color, который полезен для подсветки терминов поиска в длинных строках, и --after-context, который печатает число строк после последней совпавшей строки. Вы можете оформить рекурсивных grep, который ищет во всех подкаталогах встречающихся каталогов, с помощью опции -r. Как обычно, опции могут быть объединены.

Регулярные выражения могут быть использованы для более подробной детализации совпадений, которые вы хотите выбрать из всех строк ввода. Лучшим способом познакомиться с регулярными выражениями является чтение документации по grep. Отличная глава включена в info-страницу grep. Поскольку обсуждение вводов и выводов регулярных выражений завело бы нас слишком далеко, настоятельно рекомендуется начать с документации, если вы хотите знать о них больше.

Поиграйте немного с grep, это займет у вас какое-то время для изучения этой самой базовой, но очень мощной команды фильтрации. Упражнения в конце этой главы помогут вам начать работу, см. раздел 5.5. "Упражнения".

Фильтрация вывода

Команда sort по умолчанию сортирует строки в алфавитном порядке:

thomas:~> cat people-I-like | sort
Auntie Emmy
Boyfriend
Dad
Grandma
Mum
My boss

Но есть множество другого, что sort может делать. Просмотр размера файла, например. С помощью этой команды, содержимое каталога сортируется от наименьших файлов в начале, до самых больших в конце:

ls -la | sort -nk 5

note.gif Старый синтаксис sort. 
Вы можете получить тот же результат с ls -la | sort +4n, но это старая форма, которая не соответствует текущим стандартам.

Команда sort также используется в сочетании с программой uniq (или sort -u) для сортировки вывода и отфильтровывания двойных записей:

thomas:~> cat itemlist
1
4
2
5
34
567
432
567
34
555

thomas:~> sort itemlist | uniq
1
2
34
4
432
5
555
567

Создано