Чтобы ваш код работал, вам нужно изменить его на:
$ awk '{for(i=1;i<=NF;i++)if($i==0) print $1}' file
c
d
- Вам нужно поместить код в блок (
{}
пара). - Вынеобходимо использовать
$i
вместо i
в условии if, $i
означает i
-й столбец. - Хотя в этом нет необходимости, лучше добавить пробел между командой и параметром.(
print $1
)
И лучше его немного улучшить:
awk '{for(i=1;i<=NF;i++)if($i==0) {print $1;next}}' file
Добавить next
, чтобы избежать print $1
несколько раз, когда их большеодин 0
в строке.
Учитывая, что столбцы разделены пробелом, вы также можете сделать это следующим образом:
awk '/( |^)0( |$)/{print $1}' file
Для этого не требуется GNU awk.
/( |^)0( |$)/
- это RegEx , а в команде это сокращение от $0 ~ /( |^)0( |$)/
.
^
означает начало строки, $
конец строки здесь.