Обзор инструментов обработки информации и фильтров

В прошлом материале мы познакомились с работой программы cat, которая обычно идет вначале длинной цепочки переадресации ввода-вывода между программами. Но на текущий момент наши цепочки состояли максимум из трех команд, из которых только одна выполняла обработку информации. Ведь мы пока не знакомы с множеством полезных инструментов.

В Linux инструменты обработки информации, которые часто используются в цепочках переадресации ввода-вывода, называются фильтрами. Они считывают информации из стандартного вывода, обрабатывают ее и выводят результат в стандартный вывод. Ввод обычно перенаправляется на вывод предыдущей программы, а вывод либо на вводе следующей программы, либо в файл для сохранения конечного результата. Таким образом, объединив несколько простых инструментов, можно легко выполнить существенное преобразовании информации и получить результат в удобном виде 🙂

Познакомимся с наиболее часто используемыми фильтрами. Более подробно с некоторыми из них мы познакомимся с ними в материалах программирования и разработки скриптов для Linux Shell. Рекомендую самостоятельно ознакомиться со справочной информацией по каждой из описанных программ.

sort
Сортирует строки и выводит их в упорядоченном виде. Мы уже знакомы с этим фильтром 🙂
uniq
Фильтрует повторы соседних строк, выводя каждую строку не более одного раза. Обычно применяется для отсортированного списка через sort, чтобы вырезать все повторы строк из текста.
grep
Просматривает информацию и фильтрует ее по указанному шаблону.
fmt
Считывает текст и выводит его строки в отформатированном виде, удобном для чтения.
pr
Подготавливает информацию к распечатке на бумаге путем разбивки ее на страницы и вставки верхнего и нижнего колонтитула.
head
Выводит только несколько первых строк. Обычно применяется для ознакомления с заголовками файлов.
tail
Выводит только несколько последних строк. Обычно применяется для ознакомления с последними записями журнальных файлов. В составных цепочках используется после фильтрации информации.
tr
Выполняет преобразование символов. Используется для преобразования регистра и типов переноса строк (в различных ОС, концы строк кодируются разными символами).
sed
Редактирует информацию по заданным правилам в процессе ее считывания и сразу выводит результат. Предназначен для более сложных преобразований, которые не может выполнить программа tr. Обработка информации происходит в процессе получения информации без ожидания указателя конца ввода.
awk
Выводит преобразованную информацию по заданным правилам. Достаточно могущественный и сложный инструмент.
wc
Подсчитывает и выводит число строк, слов и символов. Часто употребляется с ключом -l в цепочках, чтобы вывести только одно число — количество строк.

А теперь посмотрим использование некоторых инструментов на примере. Во время путешествия по файлам и директориям Linux мы посещали директорию /var/log, в которой хранятся журнальные файлы. Там хранится файл boot.log, содержащий информацию о последней загрузке системы. Откровенно говоря, я выбрал этот файл для текущего примера только из-за того, что он не требует прав суперпользователя для чтения 😉 Откроем его в программе less, быстро ознакомимся с его содержимым и закроем.

Файл boot.log в less

Заметили странные начала строк? Так less выводит специальные символы, которые не предназначены для прямого отображения на экране (например, перенос страницы). Здесь данные спецсимволы распознаются терминальной программой и используются для выделения слова OK зеленым цветом при выводе в терминале. Но less заменил их на видимые, чтобы отобразить нам их присутствие в тексте. Но сейчас мы это исследовать не будем.

Если приглядеться, то можно заметить, что в файле есть строки, содержащие «Reached target». Они обозначают начала выполнения группы действий. Мы хотим ознакомиться со списком из первых пяти этих групп в алфавитном порядке. Но как это сделать? Искать в less строку «Reached target» мы умеем, но это не очень удобно. Лучше отфильтруем содержимое файла boot.log, оставим в нем лишь строки, которые содержат «Reached target». Отсортируем список по алфавиту и выведем только первые 5 строк.

Цепочка cat, grep, sort, head

С виду сложная задача для решения в графическом интерфейсе была легко решена в командной строке Linux Shell. Теперь, я надеюсь, смысл и удобства цепочек команд понятен всем. А еще мы увидели как выглядит этот таинственно закодированный зеленый цвет 🙂

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *