Знання основ команди “awk” дуже важливо, коли йдеться про ефективну обробку даних, і ця публікація висвітлює ключові особливості команди “awk”. Спершу перевіримо синтаксис:
$ awk [параметри] [файл]Деякі з найбільш часто використовуваних варіантів наведені в таблиці нижче:
Варіант | Опис |
-F | Щоб вказати розділювач файлів |
-f | Вкажіть файл, який містить сценарій “awk” |
-v | Призначити змінну |
Давайте подивимось на кілька прикладів використання команди “awk”, і для демонстрації я створив текстовий файл з іменем testFile.txt:
1. Як надрукувати стовпець файлу за допомогою команди awk?
Команда "awk" може бути використана для отримання певного стовпця текстового файлу. Для друку вмісту файлу використовуйте:
$ cat testFile.txt
Тепер, щоб надрукувати другий стовпець файлу, використовуйте:
$ awk 'print $ 2' testFile.txt
Щоб надрукувати більше одного поля, використовуйте команду:
$ awk 'print $ 1, $ 2, $ 3' testFile.txt
Якщо ви не використовуєте кому ",", то результат буде без пробілів:
$ awk 'print $ 1 $ 2 $ 3' testFile.txt
2. Як використовувати регулярний вираз з командою awk:
Для узгодження рядків або будь-якого виразу ми використовуємо скісні риски «//», наприклад, якщо ви хочете надрукувати імена людей, які вивчають «Історію», тоді використовуйте:
$ awk '/ History / print $ 2' testFile.txt
Результат наочно показує, що лише “Сем” та “Томмі” вивчають курс “Історія”.
3. Як використовувати реляційний вираз з командою “awk”:
Для відповідності змісту конкретного поля можна використовувати реляційний вираз. Щоб зіставити будь-який рядок чи вираз із полем, вкажіть поле та скористайтесь оператором порівняння «~» із шаблоном, представленим у такій команді:
$ awk '$ 3 ~ / is / print $ 2' testFile.txt
Наведений вище результат відображає кожне поле у стовпці 2 проти кожного поля, що містить “є” у стовпці 3.
А щоб отримати протилежний результат вищезазначеної команди, використовуйте “! ~ ”Оператор:
$ awk '$ 3! ~ / is / print $ 2 'testFile.txt
Для порівняння, ми також можемо використовувати оператори, такі як більші за “>” та менші за “<” and equal “=” as well:
$ awk '$ 4> 70 print $ 2' testFile.txt
Вихідні дані надрукували імена людей, які отримали оцінки понад 70.
4. Як використовувати шаблон діапазону за допомогою команди awk:
Діапазон також може бути використаний для пошуку; просто скористайтеся комою “,”, щоб відокремити діапазон, як представлено в згаданій нижче команді:
$ awk '/ Joel /, / Marlene / print $ 3' testFile.txt
Результат показує суб'єктів від "Джоеля" до "Марлен" зі стовпця 2. Ми можемо використовувати подвійний знак рівності “==” для визначення діапазону; див. приклад нижче:
$ awk '$ 4 == 80, $ 4 == 90 print $ 0' testFile.txt
На виході відображаються імена людей зі стовпця 2 для діапазону позначок “70 до 80” із стовпця 4.
5. Як поєднати шаблон за допомогою логічного оператора:
Використання логічних операторів, таких як АБО «||,» І «&&», дозволяє комбінувати шаблони для пошуку. Використовуйте наступну команду
$ awk '$ 4> 80 && $ 6> 0.4 print $ 2 'testFile.txt
Вищевказана команда друкує імена людей проти четвертого поля, більшого, ніж 80, і шостого поля, більшого за 0.4. І лише два записи виконують умову.
6. Спеціальні вирази команди awk:
Існують два спеціальні вирази:ПОЧАТИ”Та“КІНЕЦЬ”:
ПОЧАТИ: виконати дію до обробки даних
END: Для виконання дії після обробки даних
$ awk 'BEGIN print «Обробка розпочата»; друк $ 2; END print «Обробка завершена» 'testFile.txt
7. Корисна вбудована змінна команди awk:
Команда awk має різні змінні, які допомагають в обробці даних:
Змінна | Опис |
NF | Він надає кількість полів у даних |
NR | Він дає номер поточного запису |
ФАЙЛ | Відображає ім'я файлу, який наразі обробляється |
ФС та ОФС | Розділювач поля та вихідний роздільник поля |
RS та ORS | Відокремлює розділювач записів та вихідних записів |
Наприклад:
$ awk 'END print "Ім'я файлу" FILENAME "має" NF "поля та" NR "записи"' testFile.txt
Ми використовуємо “END”, але якщо ви використовуєте “BEGIN”, на виході буде 0 полів і 0 записів.
8. Як змінити роздільник записів:
Розділювачем за замовчуванням у записі зазвичай є пробіл; якщо є кома “,” або крапка “.”Як роздільник поля, тоді використовуйте опцію“ FS ”разом із роздільником.
Давайте мати ще один файл, де поля даних розділені комами двокрапки “:”:
$ cat testFile2.txt$ awk 'BEGIN FS = “:” print $ 2' testFile2.txt
Оскільки роздільник файлу - двокрапка, але команда “awk” навіть корисна для таких файлів, просто скористайтеся опцією “FS”.
Також можна використовувати "-F":
$ awk -F “:” 'print $ 2' testFile2.txt
Розділювачем записів за замовчуванням є "новий рядок", і щоб встановити роздільник записів на ":", використовуйте:
$ awk 'BEGIN RS = “:” print $ 1' testFile2.txt
9. Дії Awk:
Дії Awk - це крихітні програми, які оточені дужками “” і мають більше ніж один оператор, розділений крапками з комою “;”.
Найбільш вживаним оператором із командою “awk” є оператор “print”. Наприклад, щоб надрукувати текст із кожним записом, використовуйте текстовий рядок у лапках:
$ awk '“Це поле,” $ 2' тестовий файл.txt
Давайте виконаємо просту операцію підсумовування за допомогою awk:
$ awk 'sum + = $ 4 END printf “% d \ n”, sum' testFile.txt
10. Створення програми awk:
Почнемо з програмування "awk", наведене нижче програмування просто виконує множення:
ПОЧАТИi = 2
в той час як (j<4)
друк “Множення 2 на” j “є” i * j;
j++
Збережіть програму за назвою “myCode.awk"І для його запуску відкрийте термінал і введіть:
$ awk -f myCode.awkВисновок:
Команда “awk” - це зручна команда для обробки, сканування даних текстових файлів, наприклад, для відокремлення будь-якого конкретного поля файлу; ми використовуємо команду “awk”. Це полегшує пошук із текстових файлів у будь-якій формі чи шаблоні. У цьому посібнику ми розуміємо основи команди “awk” та її використання. Команда “awk” перевіряє дані, генерує звіти та навіть аналізує файли. Використання простих команд “awk” також дозволяє користувачам писати крихітні програми для ефективнішої обробки даних.