Количество полей, возвращаемых awk

Есть ли способ заставить awk возвращать число полей, удовлетворяющих критериям разделителя полей? Скажем, например, мой файл содержит

a b c d

поэтому awk --field-separator=" " | <something> должен возвращать 4

Ответы

Ответ 1

Переменная NF устанавливается на общее число полей во входной записи. Итак:

echo "a b c d" | awk --field-separator=" " "{ print NF }"

отобразит

4

Обратите внимание, что:

echo -e "a b c d\na b" | awk --field-separator=" " "{ print NF }"

отобразит:

4
2

Надеюсь, что это поможет, и счастливое awking

Ответ 2

NF задает количество полей для данной записи:

[]$ echo "a b c d" | gawk '{print NF}'
4

Ответ 3

Если вы хотите узнать набор всех номеров полей в многострочном содержимом, вы можете запустить:

X | awk '{print NF}' | sort -n | uniq

является X командой, которая выводит содержимое в стандартный вывод: cat, echo и т.д. Пример:

С file.txt:

a b
b c
c d
e t a
e u

Команда cat file.txt | awk '{print NF}' | sort -n | uniq будет печатать:

2
3

И с file2.txt:

a b
b c
c d
e u

Команда cat file2.txt | awk '{print NF}' | sort -n | uniq будет печатать:

2