샘플 파일
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