필드 수를 계산하려면 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:~$ 

이 예에서 단독으로 사용하여 필드 수를 계산할 수 있습니까 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

관련 정보