Количество полей, возвращаемых 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