В контексте командной строки Linux «пайплайн» (pipeline) — это цепочка команд, где вывод одной команды передаётся на вход следующей через символ |
Общая схема построения pipeline : команда1 | команда2 | команда3
Логига построения:
- Источник данных — команда, которая выдает поток текста (файл, лог, список процессов и т.п)
- Фильтрация/преобразование — команды типа grep, sed, awk, cut, sort
- Агрегация/форматирование — wc, uniq, head/tail, column, jq(для json) и другие
- Вывод/сохранение — less, tee, перенаправление в файл (> file.txt)
Построение конвейеров (pipеline) рассмотрим на примере двух утилит для работы с тектом grep и tail.
- grep — ищет строки по шаблону (регулярному выражению)
- tail — показывает последние строки файла (по умолчанию 10)
Примеры использования
Найти строки со словом «ERROR» в файле:
Показать последние 50 строк и отфильтровать среди них строки с «warning»:
Найти все строки с IP‑адресом в логе:
Взять последние 100 строк лога и найти среди них успешные ответы (код 200) :
Посчитать, сколько раз встречается «timeout» в последних 500 строках
Мониторинг ошибок в реальном времени:
где tail -f следит за файлом и отдаёт новые строки по мере появления.
—line-buffered у grep нужен, чтобы он сразу выводил строки, а не копил их в буфере.
Взять последние N строк и найти в них что-то:
- Сначала «обрезаем» лог до последних 500 строк
- Потом ищем HTTP‑коды 500.
- В конце считаем количество таких строк.
Получить уникальные IP‑адреса из последних строк лога:
где tail -n 1000 — берём последние 1000 строк.
awk '' — вытаскиваем первое поле (обычно это IP).
sort | uniq -c — считаем, сколько раз встречается каждый IP.
sort -nr — сортируем по количеству (числовой, в порядке убывания).
head -n 10 — оставляем топ‑10.