AWK ([ɔːk] is a domain-specific language designed for text processing and typically used as a data extraction and reporting tool. Like sed and grep, it is a filter, and is a standard#cli feature of most Unix-like operating systems.

The AWK language is a data-driven scripting language consisting of a set of actions to be taken against streams of textual data – either run directly on files or used as part of a pipeline – for purposes of extracting or transforming text, such as producing formatted reports.


Допустим, есть текстовый файл info.txt следующего содержания:

fristName       lastName        age     city       ID

Thomas          Shelby          30      Rio        400
Omega           Night           45      Ontario    600
Wood            Tinker          54      Lisbon     N/A
Giorgos         Georgiou        35      London     300
Timmy           Turner          32      Berlin     N/A

Вывод нужных строк и колонок

Вывести содержимое файла с нумерацией строк:

awk '{print NR,$0}' info.txt

Вывести только первую колонку файла:

awk '{print $1}' info.txt

Для вывода второй колонки использовать $2, и т.д. По умолчанию, колонки определяются по пробелам.

Можно вывести несколько колонок:

awk '{print $1, $4}' info.txt

Вывести только крайнюю правую колонку:

awk '{print $NF}' info.txt

Вывести только первую строку, первую колонку:

awk '{print $1}' info.txt | head -1

Вывести первые три строки, первую колонку:

awk '{print $1}' info.txt | head -3

Вывод строк по RegExp

Вывод строк, начинающихся на O:

awk '/^O/' info.txt

Вывод строк, завершающихся 0:

awk '/0$/' info.txt

Можно использовать ! в качестве отрицания – вывести строки, НЕ заканчивающиеся на 0:

awk '! /0$/' info.txt

Операторы сравнения

Вывести только строки, где третья колонка меньше 40:

awk '$3 <  40 { print $0 }' info.txt

📂 Tooling | Последнее изменение: 12.08.2024 13:32