Awk: Difference between revisions
No edit summary |
No edit summary |
||
| Line 13: | Line 13: | ||
Однако этим использование команды AWK не заканчивается, так же можно использовать <b>регулярные выражения</b>: |
Однако этим использование команды AWK не заканчивается, так же можно использовать <b>регулярные выражения</b>: |
||
[[file:Igor_regex_awk.png]], тут выписываются весь файл *<b>{print $0}</b>*, но регулярным выражением мы указали что только строчки содержащие "I" |
[[file:Igor_regex_awk.png]], тут выписываются весь файл *<b>{print $0}</b>*, но регулярным выражением мы указали что только строчки содержащие "I" |
||
<h3>Встроенные переменные</h3> |
|||
| ⚫ | |||
<ul> |
<ul> |
||
| ⚫ | |||
<li>NF: Команда NF подсчитывает количество полей в текущей входной записи. |
<li>NF: Команда NF подсчитывает количество полей в текущей входной записи. |
||
<li>FS: команда FS содержит символ-разделитель полей, который используется для разделения полей в строке ввода. По умолчанию используется «пробел», что означает пробел и символы табуляции. FS можно переназначить другому символу (обычно в BEGIN), чтобы изменить разделитель полей. |
|||
<li>RS: Команда RS сохраняет текущий символ разделителя записи. Поскольку по умолчанию входная строка является входной записью, символом разделителя записей по умолчанию является новая строка. |
|||
<li>OFS: команда OFS сохраняет разделитель полей вывода, который разделяет поля, когда Awk их печатает. По умолчанию это пустое место. Всякий раз, когда print имеет несколько параметров, разделенных запятыми, между каждым параметром будет напечатано значение OFS. |
|||
<li>ORS: Команда ORS сохраняет разделитель выходных записей, который разделяет выходные строки, когда Awk их печатает. По умолчанию используется символ новой строки. print автоматически выводит содержимое ORS в конце всего, что было передано для печати. |
|||
</ul> |
</ul> |
||
Такой командой можно выписать все строки, отображая номер. [[file:Igor_awk_nr.png]] <br> |
|||
Такой командой можно выписать, в данном случае первый столбик, и последний столбики [[file:Igor_first_nf_awk.png]] <br> |
|||
Такой командой можно выписать все строки, где последний столбик <b>$NF</b> равен <b>Male</b> [[File:Igor_awk_condition.png]] |
|||
Revision as of 14:21, 12 January 2023
Команда AWK
AWK - это скриптовый язык, который не требует компиляции и используется прямо в командной строке, применяемый при фильтрации и обработке текста.
Работает она таким образом, что читает файл по строчке за раз и выполняет указанное действие выводя результат.
Использование команды AWK
Синтакс AWK выглядит так: awk параметры 'действие' исходный_файл
Если написать awk в терминал, то выдаст такое применение:
Все возможные параметры команды AWK:
Примеры использования
Имея такой файл и используя awk '{print $3}' anyfile, я получу такой вывод:
, то есть, выписался только 3-тий столбик, так же этот вывод перенаправить в файл добавив > any_other_file к концу, название файла может быть любым
Однако этим использование команды AWK не заканчивается, так же можно использовать регулярные выражения:
, тут выписываются весь файл *{print $0}*, но регулярным выражением мы указали что только строчки содержащие "I"
Встроенные переменные
- NR: Команда NR ведет текущий подсчет количества входных записей. Помните, что записи обычно представляют собой строки. Команда Awk выполняет операторы шаблона/действия один раз для каждой записи в файле.
- NF: Команда NF подсчитывает количество полей в текущей входной записи.
Такой командой можно выписать все строки, отображая номер.
Такой командой можно выписать, в данном случае первый столбик, и последний столбики
Такой командой можно выписать все строки, где последний столбик $NF равен Male