Главная > Обработка текста и поиск > awk

Краткое руководство по awk

Инструмент для обработки потоков текста, который выполняет фильтрацию, преобразование и агрегацию данных, обрабатывая их по записям и полям. Здесь собраны общие опции и типичные шаблоны, основанные на GNU awk (gawk).

Обзор

awk читает входные данные как записи (по умолчанию: строки), делит их по разделителю полей (FS), затем применяет шаблон/действие { ... } и выводит желаемый результат (OFS). Типичные применения включают извлечение столбцов, фильтрацию по условиям, расчет сумм/средних значений, преобразование форматов и т.д.

Основные встроенные переменные

Основные встроенные переменные, управляющие операциями ввода-вывода и форматированием.

  • NR: Номер записи (строки), прочитанной до сих пор
  • FNR: Номер записи в текущем файле
  • NF: Количество полей в текущей записи
  • FS: Разделитель входных полей (по умолчанию пробел)
  • OFS: Разделитель выходных полей (по умолчанию пробел)
  • RS: Разделитель записей (по умолчанию новая строка)
  • ORS: Разделитель выходных записей (по умолчанию новая строка)

Базовая форма

awk '패턴 { 액션 }' input.txt
awk -f program.awk input.txt

Блок 'шаблон/действие' передается одной строкой, либо файл скрипта передается с помощью -f.

Основные опции

Опции, часто используемые на практике, сгруппированы по ситуациям. Включает опции, совместимые с gawk.

1) 기본 실행/입력

2) 필드/변수 전달

3) 디버깅/호환(gawk)

4) 도움말/버전

Сгенерированная команда:

Комбинируйте команды.

Описание:

`awk` Запускает команду.

Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.

Часто используемые шаблоны

Извлечение столбцов

awk -F ':' '{ print $1, $3 }' /etc/passwd

Вывод только 1-го и 3-го полей, разделенных двоеточием

Фильтрация по условию

awk '$5 > 100 { print }' data.tsv

Вывод только записей, где значение 5-го поля больше 100

Пример агрегации

awk '{ sum += $2 } END { print sum }' data.txt

Сумма второго столбца

Передача переменных и формат

awk -v OFS=',' '$1=="KEY" { print $1, $2, $3 }' input.txt

Установка OFS в запятую и вывод только определенных ключей

Практические советы

Обработка потока построчно, поэтому комбинации с пайпами очень мощные.

  • В разделителе полей можно использовать регулярные выражения: -F '[,:\t]+'
  • Можно писать программы по частям, используя несколько -e
  • Длинные скрипты разделяйте с помощью -f и управляйте версиями через git
  • Настраивайте формат вывода, регулируя OFS/ORS
  • Для больших объемов ввода упрощайте конвейер, оставляя только минимально необходимые операции

Связанные команды

Функционально схожие или часто используемые команды.



Те же команды в категории