Використання скорочень
Конструкцію, яка використовується для виведення рядків відповідних заданій масці:
можна скоротити до
Умова в awk може бути задано поза дужками, тобто отримуємо:
За замовчуванням, дії виробляються з усією рядком, $ 0 можна не вказувати:
print - є дією за замовчуванням, його теж можна не вказувати:
Для виведення значення першого стовпчика рядки, в якій присутній маска LEGO:
Для виведення значення першого стовпчика рядки, у другому стовпці якої є маска LEGO:
Для заміни слова LIGO на LEGO і виведення тільки змінених рядків можна використовувати:
Але якщо потрібно виводити всі рядки (як sed 's / LIGO / LEGO /'), конструкцію можна спростити (1 - true для всіх рядків):
Вивести всі рядки, за винятком кожній шостій:
Вивести рядки, починаючи з 6 (як tail -n +6 або sed '1,5d'):
Вивести рядки, в яких значення другого стовпця одно foo:
Вивести рядки, в яких 6 і більше стовпців:
Вивести рядки, в яких є слова foo і bar:
Вивести рядки, в яких є слово foo, але немає bar:
Вивести рядки, в яких є слова foo або bar (як grep -e 'foo' -e 'bar'):
Вивести всі непусті рядки:
Вивести всі рядки, видаливши вміст останнього стовпця:
Вивести номери рядків перед вмістом:
Замінимо команди (пропускаємо 1 рядок, фільтруємо рядки з foo і замінюємо foo на bar, потім переводимо в верхній регістр і виводимо значення другого стовпця):
аналогічною конструкцією на awk:
Використання діапазонів
Вивести групу рядків, починаючи з рядка, в якій є foo, і закінчуючи рядком, в якій є bar:
Виключивши з виведення рядка з входженням заданих масок:
Більш оптимальний варіант:
Виключити тільки рядок із завершальним входженням (bar)
Виключити тільки рядок з початковим входженням (foo)
Розбиття файлу по шаблонах
Є файл (file), в якому групи рядків розділені шаблонами FOO1, FOO2 і т.д. Необхідно записати дані, що знаходяться між мітками FOO в різні файли, що відповідають зазначеним в FOO номерами.
У GNU Awk можна зробити так:
парсинг CSV
За замовчуванням як роздільник використовуються пробіл і табуляція. Щоб визначити інший роздільник, наприклад кому, потрібно використовувати FS = ',' або опцію «-F».
Як параметр може бути задано регулярний вираз, наприклад:
Але для розбору CSV це не підійде, так як прогалини можуть бути присутніми і всередині рядків, тому простіше вирізати лідируючі прогалини перед і після коми:
Якщо в CSV дані поміщені в лапки, наприклад «field1", "field2», то підійде такий скрипт:
Але скрипт доведеться вдосконалити для розбору полів виду:
field1, «field2, with, commas». field3. «Field4, foo»
Порівняння двох файлів
Висновок всіх дублюються рядків з двох невідсортованих файлах file1 і file2:
Висновок тільки виділених блоків тексту
Наприклад, щоб показати з файлу з текстом тільки текст, зазначений як = текст = можна використовувати:
з форматуванням переносів рядків: