Маленький підручник по sed і awk

У цьому додатку міститься дуже короткий опис прийомів роботи з утилітами обробки тексту sed і awk. Тут будуть розглянуті лише кілька базових команд, яких, в принципі, буде досить, щоб навчитися розуміти найпростіші конструкції sed і awk всередині сценаріїв на мові командної оболонки.

awk. мова обробки шаблонів з C-подібним синтаксисом

При всіх своїх відмінностях, ці дві утиліти володіють схожим синтаксисом, вони обидві вміють працювати з регулярними виразами. обидві, по-замовчуванню, читають дані з пристрою stdin і обидві виводять результат обробки на пристрій stdout. Обидві є утилітами UNIX-систем, і чудово можуть взаємодіяти між собою. Висновок від однієї може бути перенаправлений, по конвеєру, на вхід іншого. Їх комбінування надає сценаріями, мовою командної оболонки, міць і гнучкість мови Perl.

Одна важлива відмінність полягає в тому, що у випадку з sed, сценарій легко може передавати додаткові аргументи цієї утиліті, в той час, як у випадку з awk (див. Приклад 33-3 і Приклад 9-22), це більш складне завдання.

З усього розмаїття операцій, ми зупинимося на трьох, які використовуються найбільш часто. Це p - друк (на stdout), d - видалення і s - заміна.

Таблиця B-1. Основні операції sed

Заміна рядка символом нового рядка, еквівалентна видалення частини рядка, що збігається з шаблоном. Інша частина рядка залишається без змін. Наприклад, s / GUI //. змінить наступний рядок

Символ зворотного слеша представляє символ перекладу рядка, як символ заміни. В цьому випадку, заміщає вираз триває на наступному рядку.

Ця інструкція замінить початкові прогалини в рядку на символ перекладу рядка. Очікуваний результат - заміна відступів на початку параграфа порожніми рядками.

Вказівка ​​діапазону рядків, що передує однієї, або більш, інструкції може зажадати укладення інструкцій у фігурні дужки, з відповідними символами переведення рядка.

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

Швидкий спосіб установки подвійних міжрядкових інтервалів в текстових файлах - sed G filename.

Схожі статті