サンプルファイル
wolf@linux:~$ awk // file.txt
a b
b c
c d
wolf@linux:~$
この例には、2つのフィールドと3つのレコードがあります。
wolf@linux:~$ awk '{print NF}' file.txt
2
2
2
wolf@linux:~$
一意の番号を取得するには、uniq
コマンドを使用します。
wolf@linux:~$ awk '{print NF}' file.txt | uniq
2
wolf@linux:~$
この例では単独でフィールド数を計算できますかawk
?uniq
希望の出力
wolf@linux:~$ awk <???> file.txt
2
wolf@linux:~$
答え1
欲しいものは少し不明です(uniq
削除のみが行われます。近い重複)しかし、レコード内のすべての固有フィールドの数を印刷するとします。隣接するかどうかに関係なくあなたはそれを使用することができます
awk '!seen[NF]++ {print NF}' file.txt
答え2
BEGIN ルールは、最初の入力レコードを読み取る前に一度だけ実行されます。
同様に、END ルールはすべての入力を読み取った後に一度だけ実行されます。
https://www.gnu.org/software/gawk/manual/html_node/Using-BEGIN_002fEND.html
たとえば、1
$ awk 'END {print NF}' file.txt
2
実施例2
$ awk 'END {print NF " NF"}' file.txt
2 NF
実施例3
$ awk 'END {print NF,NR}' file.txt
2 3
たとえば、4
$ awk 'END {print NF " NF, " NR " NR"}' file.txt
2 NF, 3 NR