Поиск…


Вступление

awk состоит из шаблонов и действий, заключенных в фигурные скобки, которые должны быть приняты, если шаблон совпадает. Самый простой шаблон - пустой шаблон, который соответствует любой записи. Самое основное действие - это пустое действие, эквивалентное { print } , которое, в свою очередь, эквивалентно { print $0 } . Если оба шаблона и действие пустые, awk просто ничего не сделает.

Следующая программа просто повторит ввод, например:

awk '{ print }' /etc/passwd

Поскольку { print } является действием по умолчанию, и поскольку истинное значение соответствует любой записи, эта программа может быть переписана как:

awk '1' /etc/passwd

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

awk '/oo+/ { print }' /etc/passwd

Однако вы можете использовать произвольные выражения как шаблоны. Следующая программа печатает имена (полевые) пользователей в группе нуль (поле четыре), например:

awk -F: '$4 == 0 { print $1 }' /etc/passwd

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

awk -F: '$4 ~ /0/ { print $1 }' /etc/passwd

Линии фильтров по длине

Этот шаблон позволит вам фильтровать строки в зависимости от их длины

$cat file
AAAAA
BBBB
CCCC
DDDD
EEEE

$awk 'length($0) > 4 { print $0 }' file
AAAAA
$

Во всяком случае, шаблон позволит выполнить следующий блок кода, тогда как действие по умолчанию для AWK печатает текущую строку {print} , мы увидим тот же результат при выполнении этого:

$awk 'length($0) > 4 ' file
AAAAA


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow