Эта глава описывает несколько полезных команд AWK и их соответствующие примеры. Рассмотрим текстовый файл marks.txt для обработки со следующим содержимым:
1) Amit Physics 80 2) Rahul Maths 90 3) Shyam Biology 87 4) Kedar English 85 5) Hari History 89
Печать столбца или поля
Вы можете настроить AWK на печать только определенных столбцов из поля ввода. Следующий пример демонстрирует это —
пример
[jerry]$ awk '{print $3 "\t" $4}' marks.txt
Выполнив этот код, вы получите следующий результат —
Выход
Physics 80 Maths 90 Biology 87 English 85 History 89
В файле marks.txt третий столбец содержит имя субъекта, а четвертый столбец содержит оценки, полученные по конкретному предмету. Давайте распечатаем эти два столбца с помощью команды печати AWK. В приведенном выше примере $ 3 и $ 4 представляют третье и четвертое поля соответственно из входной записи.
Печать всех строк
По умолчанию AWK печатает все строки, которые соответствуют шаблону.
пример
[jerry]$ awk '/a/ {print $0}' marks.txt
Выполнив этот код, вы получите следующий результат —
Выход
2) Rahul Maths 90 3) Shyam Biology 87 4) Kedar English 85 5) Hari History 89
В приведенном выше примере мы ищем шаблон формы a . Когда сопоставление с образцом завершается успешно, он выполняет команду из блока body. При отсутствии блока тела — выполняется действие по умолчанию, которое заключается в печати записи. Следовательно, следующая команда дает тот же результат —
пример
[jerry]$ awk '/a/' marks.txt
Печать столбцов по шаблону
Когда совпадение с образцом завершается успешно, AWK печатает всю запись по умолчанию. Но вы можете настроить AWK на печать только определенных полей. Например, следующий пример печатает третье и четвертое поле, когда совпадение с образцом завершается успешно.
пример
[jerry]$ awk '/a/ {print $3 "\t" $4}' marks.txt
Выполнив этот код, вы получите следующий результат —
Выход
Maths 90 Biology 87 English 85 History 89
Печать колонки в любом порядке
Вы можете печатать столбцы в любом порядке. Например, в следующем примере печатается четвертый столбец, за которым следует третий столбец.
пример
[jerry]$ awk '/a/ {print $4 "\t" $3}' marks.txt
Выполнив приведенный выше код, вы получите следующий результат —
Выход
90 Maths 87 Biology 85 English 89 History
Подсчет и печать совмещенного рисунка
Давайте посмотрим пример, где вы можете посчитать и напечатать количество строк, для которых совпадение с образцом прошло успешно.
пример
[jerry]$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt
Выполнив этот код, вы получите следующий результат —
Выход
Count = 4
В этом примере мы увеличиваем значение счетчика при успешном совпадении с шаблоном и печатаем это значение в блоке END. Обратите внимание, что в отличие от других языков программирования, нет необходимости объявлять переменную перед ее использованием.
Печать строк с более чем 18 символами
Давайте печатать только те строки, которые содержат более 18 символов.
пример
[jerry]$ awk 'length($0) > 18' marks.txt
Выполнив этот код, вы получите следующий результат —
Выход
3) Shyam Biology 87 4) Kedar English 85
AWK предоставляет встроенную функцию длины, которая возвращает длину строки. Переменная $ 0 хранит всю строку, и при отсутствии блока тела выполняется действие по умолчанию, то есть действие печати. Следовательно, если строка содержит более 18 символов, то результаты сравнения верны, и строка печатается.