Skip to main content

Как написать AWK-команды и скрипты

Скриптинг в Unity Как писать скрипты для unity3d (Июнь 2025)

Скриптинг в Unity Как писать скрипты для unity3d (Июнь 2025)
Anonim

Команда awk - это мощный метод обработки или анализа текстовых файлов, в частности файлов данных, которые организованы строками (строками) и столбцами.

просто AWK команды могут быть запущены из командной строки. Более сложные задачи должны быть записаны в виде awk-программ (так называемых awk-скриптов) в файл.

Основной формат команды awk выглядит следующим образом:

awk 'pattern {действие}' input-file> output-file

Это означает: взять каждую строку входного файла; если строка содержит шаблон, примените действие к строке и напишите результирующую строку в выходной файл. Если шаблон опущен, действие применяется ко всей строке. Например:

awk '{print $ 5}' table1.txt> output1.txt

Этот оператор принимает элемент 5-го столбца каждой строки и записывает его как строку в выходной файл «output.txt». Переменная «$ 4» относится ко второму столбцу. Аналогичным образом вы можете получить доступ к первому, второму и третьему столбцам с помощью $ 1, $ 2, $ 3 и т. Д. По умолчанию предполагается, что столбцы разделены пробелами или вкладками (так называемое пустое пространство). Итак, если входной файл «table1.txt» содержит следующие строки:

1, Джастин Тимберлейк, Название 545, Цена $ 7.302, Тейлор Свифт, Титул 723, Цена: $ 7.903, Мик Джаггер, Титул 610, Цена: $ 7.904, Леди Гага, Название 118, Цена $ 7.305, Джонни Кэш, Название 482, Цена $ 6,506, Элвис Пресли, Название 335, Цена $ 7.307, Джон Леннон, Название 271, Цена $ 7,908, Майкл Джексон, Название 373, Цена $ 5,50

Затем команда будет записывать следующие строки в выходной файл «output1.txt»:

545,723,610,118,482,335,271,373,

Если разделитель столбцов - это нечто иное, чем пробелы или табы, например запятая, вы можете указать это в инструкции awk следующим образом:

awk -F, '{print $ 3}' table1.txt> output1.txt

Это выберет элемент из столбца 3 каждой строки, если столбцы будут разделены запятой. Поэтому выход в этом случае был бы:

Заголовок 545 Заголовок 723 Заголовок 610 Название 118 Заголовок 482 Название 335 Заголовок 271 Название 373

Список операторов внутри фигурных скобок ('{', '}') называется блоком. Если вы помещаете условное выражение перед блоком, оператор внутри блока будет выполнен, только если условие истинно.

awk '$ 7 == " $ 7.30" {print $ 3}' table1.txt

В этом случае условие равно $ 7 == " $ 7.30", что означает, что элемент в столбце 7 равен $ 7.30. Обратная косая черта перед значком доллара используется для того, чтобы система не интерпретировала $ 7 как переменную и вместо этого воспринимала знак доллара буквально.

Таким образом, этот оператор awk выдает элемент в третьем столбце каждой строки, который имеет «7,30» в столбце 7.

Вы также можете использовать регулярные выражения как условие. Например:

awk '/ 30 / {print $ 3}' table1.txt

Строка между двумя слэшами ('/') является регулярным выражением. В этом случае это всего лишь строка «30.», Это означает, что если строка содержит строку «30», система выдает элемент в третьем столбце этой строки. Результатом в приведенном выше примере будет:

Timberlake, Гага, Presley,

Если элементы таблицы являются числами, awk может выполнять вычисления на них, как в этом примере:

awk '{print ($ 2 * $ 3) + $ 7}'

Помимо переменных, которые обращаются к элементам текущей строки ($ 1, $ 2 и т. Д.), Существует переменная $ 0, которая ссылается на полную строку (строку) и переменную NF, которая соответствует числу полей.

Вы также можете определить новые переменные, как в этом примере:

awk '{sum = 0; for (col = 1; col <= NF; col ++) sum + = $ col; печать суммы; }»

Это вычисляет и печатает сумму всех элементов каждой строки.

Операторы Awk часто сочетаются с командами sed.