awk
Шаблоны и действия
Поиск…
Вступление
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