Обзор AWK
AWK — это аббревиатура, образованная от инициалов трех ее разработчиков: А. В. Ахо, П. Дж. Вайнбергера и Б. В. Кернигана. Это широко используемый язык манипулирования данными в Unix-подобных системах. Он построчно считывает входные данные из файлов или стандартного ввода и обрабатывает их на основе заданных шаблонов и действий.
Как работает AWK
AWK следует базовой структуре: `pattern { action }`. При чтении каждой строки, если `pattern` совпадает, выполняется `action`. Если шаблон отсутствует, действие выполняется для каждой строки. Если действие отсутствует, соответствующие строки выводятся как есть.
Особенности AWK
- Построчная обработка: Обрабатывает входные файлы построчно (запись за записью).
- Доступ на уровне полей: Разделяет каждую строку на поля ($1, $2, ...) по пробелу (разделитель по умолчанию) и позволяет обращаться к ним.
- Сопоставление с образцом: Может выполнять операции только над строками, соответствующими определенному шаблону.
- Возможности программирования: Предоставляет базовые функции программирования, такие как переменные, условные операторы, циклы и функции.
- Создание отчетов: Позволяет легко создавать текстовые отчеты сложного формата.
Основные команды и опции AWK
Точно обрабатывайте текстовые данные, используя различные опции, встроенные переменные и специальные шаблоны AWK.
1. Базовое использование и опции ввода/вывода
2. Встроенные переменные
3. Специальные шаблоны
Сгенерированная команда:
Комбинируйте команды.
Описание:
`awk` Запускает команду.
Комбинируйте эти опции, чтобы виртуально выполнять команды с помощью ИИ.
Примеры использования
Ощутите магию обработки текстовых данных с помощью различных примеров использования команды AWK.
Вывести только второй столбец из файла
awk '{print $2}' data.txt
Извлекает и выводит только второе поле (столбец) каждой строки из файла `data.txt`. (Разделитель по умолчанию: пробел)
Вывести определенные столбцы из CSV-файла
awk -F',' '{print "Имя: " $1 ", Оценка: " $3}' scores.csv
Выводит имя (первое поле) и оценку (третье поле) из файла `scores.csv`, который разделен запятыми (`,`).
Вывести только строки, содержащие определенный шаблон
awk '/ERROR/{print}' log.txt
Выводит все строки, содержащие строку 'ERROR' из файла `log.txt`.
Вывести с номерами строк
awk '{print NR ": " $0}' names.txt
Выводит каждую строку файла `names.txt` с префиксом ее номера строки.
Изменить значение второго поля в строках, где первое поле 'apple'
awk '$1 == "apple" {$2 = "fruit"; print}' inventory.txt
Находит в файле строки, где первое поле 'apple', изменяет второе поле на 'fruit', а затем выводит всю строку.
Вывести сообщения до и после обработки файла и рассчитать общую сумму
awk 'BEGIN {total = 0; print "Начало расчета!"} {total += $1} END {print "Итого: " total}' numbers.txt
Суммирует все числа в `numbers.txt` и выводит сообщения в начале и конце. (Предполагается, что каждая строка содержит только одно число)