Модульні уроки (2/2)
Конвеєри та фільтри (grep і |)
Однією з найпотужніших можливостей командного рядка Linux є можливість поєднувати різні команди, щоб вихід однієї ставав вхідною для наступної. Ця техніка реалізується за допомогою конвеєрів і зазвичай поєднується з командою фільтрації тексту grep.
Фільтрування тексту: grep
Команда grep (друк глобального регулярного виразу) шукає певний рядок тексту в одному або кількох файлах і друкує відповідні рядки:
grep "string" [file_name]Корисні параметри для grep
grep -i "error" server.log: виконує пошук без урахування регістру (ігнорує різницю між великими та малими літерами, знаходячи «Помилка», «помилка» або «ПОМИЛКА»).grep -n "connection" server.log: відображає номер рядка разом із відповідним рядком.grep -v "INFO" server.log: Інвертує пошук, відображаючи лише ті рядки, які не містять вказане ключове слово.
З’єднання команд: конвеєр |
Оператор конвеєра представлений вертикальною смугою |. Він надсилає стандартний вихід команди зліва безпосередньо на стандартний вхід команди справа:
[command1] | [command2]Наприклад, якщо файл журналу великий і ви хочете шукати конкретне слово, не друкуючи весь файл, ви можете поєднати cat та grep:
cat logs/server.log | grep ERRORЦе зчитує весь файл server.log за допомогою cat, але замість того, щоб виводити його на екран, він направляє потік до grep, який фільтрує та відображає лише рядки, що містять слово "ERROR".
Приклади використання та поширені помилки
Якщо ви шукаєте слово в нижньому регістрі (наприклад, "post") у файлі, який містить лише у верхньому регістрі (наприклад, "POST"), grep нічого не поверне:
grep "post" logs/access.log
# Output: (no results, search is case-sensitive by default)Щоб знайти рядок незалежно від його регістру, використовуйте прапорець -i:
grep -i "post" logs/access.log
# Output:
# 127.0.0.1 - - [22/May/2026:10:10:00 +0000] "POST /login HTTP/1.1" 401 234Якщо вказаний файл не існує, grep поверне помилку:
grep "ERROR" nonexistent_file.log
# Output:
# grep: nonexistent_file.log: No such file or directoryСпробуйте самі
Вправа 1: Пошук помилок у файлах журналу
Відфільтруйте файл 'logs/server.log', щоб витягти та відобразити лише рядки, що містять слово 'ERROR' (з урахуванням регістру).
Показати підказку
Використовуйте команду grep, за якою слід шукати слово та шлях до файлу.
Рішення доступне після 3 спроб
Вправа 2: Конвеєри та фільтри
Використовуйте команду cat, щоб прочитати файл 'logs/server.log' і передайте (|) його вихід команді grep, щоб відфільтрувати та надрукувати лише рядки, які містять слово 'WARNING'.
Показати підказку
Підключіть cat logs/server.log до grep ПОПЕРЕДЖЕННЯ за допомогою каналу '|' характер.
Рішення доступне після 3 спроб
Вправа 3: пошук без урахування регістру
Шукайте всі рядки, що містять слово «post» (у верхньому чи нижньому регістрі) у файлі «logs/access.log», використовуючи відповідний прапор grep.
Показати підказку
Використовуйте grep з параметром -i, щоб ігнорувати чутливість до регістру.
Рішення доступне після 3 спроб