フィールド数を計算するには、AWKのみを使用し、uniqなどの他のコマンドを使用しないでください。

フィールド数を計算するには、AWKのみを使用し、uniqなどの他のコマンドを使用しないでください。

サンプルファイル

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:~$ 

この例では単独でフィールド数を計算できますかawkuniq

希望の出力

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

関連情報