Ответ 1
Для управления действиями необходимо использовать переменную NF
(количество полей), например, в следующей расшифровке:
$ echo '0333 foo
> bar
> 23243 qux' | awk 'NF==2{print}{}'
0333 foo
23243 qux
Это будет печатать строку, если число полей равно двум, иначе ничего не будет сделано. Причина, по которой у меня (по-видимому) странная конструкция NF==2{print}{}
, заключается в том, что некоторые реализации awk
будут печататься по умолчанию, если для строки не будут сопоставлены никакие правила. Пустая команда {}
гарантирует, что этого не произойдет.
Если вам посчастливилось иметь один из тех, кто этого не делает, вы можете уйти с:
awk 'NF==2'
но первое решение выше будет работать в обоих случаях.