Мова сканування і обробки шаблонів awk

Деякі обмеження sed усунені в програмі awk В її основу покладена та ж ідея, що і в sed, але реалізація ближче до мови Сі, ніж до текстового редактору Формат виклику програми аналогічний sed:

$ awk program імена5файлов ..

але аргумент program має інше значення:

шаблон { дію }

шаблон { дію }

Програма awk читає вхідні файли імена5файлов построчно Кожен рядок перевіряється на відповідність з кожним шаблоном при на-

личии відповідності виконуються дії Як і sed, програма awk

не змінює вхідні файли

В якості шаблонів можуть виступати регулярні вирази, ті ж, що і в egrep, або більш складні умовні вирази, що нагадують мова Сі Ось простий приклад:

$ awk / регулярний вираз / {print} імена5файлов ..

працює аналогічно програмі egrep: виводить всі рядки, що визначаються регулярним виразом

Необовязково одночасно вказувати і шаблон, і дію Якщо відсутня дія, то виконується дія за замовчуванням – висновок обраних шаблоном рядків, тобто команда

$ awk / регулярний вираз / імена5файлов ..

виконується аналогічно попередньої Якщо ж не заданий шаблон, то дія виконується над кожноївхідний рядком, і команда

$ awk {print} імена5файлов

робить те ж, що і cat, тільки набагато повільніше

Перш ніж перейти до більш цікавим прикладам, зробимо ще одне зауваження Команді awk, як і sed, можна передати файл з програмою:

$ awk-f cmdfile імена5файлов ..

Поля

Програма awk автоматично ділить кожну прочитану рядок на поля – Рядки символів (Не пробілів), розділені пробілами або знаками табуляції Згідно з цим визначенням рядки, що виводяться командою who, містять пять полів:

$ who

you

tty2

Sep 29 11:53

jim

tty4

Sep 29 11:27

$

Цим полях awk привласнює імена $ 1, $ 2, .., $ NF, де NF – змінна, що містить кількість полів в рядку У наведеному прикладі NF = 5 для обох рядків (Зверніть увагу на те, що NF – це кількість полів, а $ NF – останнє поле в рядку На відміну від оболонки, змінні awk не мають префікса $, за винятком імен полів) Наприклад, щоб не виводити розмір файлу в команді du-a, напишемо

$ du -a  | awk ’{ print

Схожі статті:


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

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*