awk + 파일의 문자열 개수 계산

awk + 파일의 문자열 개수 계산

우리는 이와 같은 거대한 파일을 가지고 있습니다

이것은 파일의 일부 목록입니다.

Topic: Ho_HTR_bvt     Partition: 31   Leader: 1007    Replicas: 1007,1008,1009        Isr: 1009,1007,1008
Topic: Ho_HTR_bvt     Partition: 32   Leader: 1008    Replicas: 1008,1009,1010        Isr: 1010,1009,1008
Topic: Ho_HTR_bvt     Partition: 33   Leader: 1009    Replicas: 1009,1010,1006        Isr: 1009,1010,1006
Topic: Ho_HTR_bvt     Partition: 34   Leader: 1010    Replicas: 1010,1006,1007        Isr: 1006,1007,1010
Topic: Ho_HTR_bvt     Partition: 35   Leader: 1006    Replicas: 1006,1008,1009        Isr: 1006,1009,1008
Topic: Ho_HTR_bvt     Partition: 36   Leader: 1007    Replicas: 1007,1009,1010        Isr: 1010,1007,1009
Topic: Ho_HTR_bvt     Partition: 37   Leader: 1008    Replicas: 1008,1010,1006        Isr: 1006,1010,1008
Topic: Ho_HTR_bvt     Partition: 38   Leader: 1009    Replicas: 1009,1006,1007        Isr: 1007,1009,1006
Topic: Ho_HTR_bvt     Partition: 39   Leader: 1010    Replicas: 1010,1007,1008        Isr: 1010,1007,1008
Topic: Ho_HTR_bvt     Partition: 40   Leader: 1006    Replicas: 1006,1009,1010        Isr: 1006,1010,1009
Topic: Ho_HTR_bvt     Partition: 41   Leader: 1007    Replicas: 1007,1010,1006        Isr: 1006,1007,1010
Topic: Ho_HTR_bvt     Partition: 42   Leader: 1008    Replicas: 1008,1006,1007        Isr: 1006,1007,1008
Topic: Ho_HTR_bvt     Partition: 43   Leader: 1009    Replicas: 1009,1007,1008        Isr: 1009,1007,1008
Topic: Ho_HTR_bvt     Partition: 44   Leader: 1010    Replicas: 1010,1008,1009        Isr: 1010,1009,1008

수량 계산 방법 -1007끈?

또는 파일의 다른 단어

답변1

샘플 데이터 사용:

$ grep -Fo 1007 file | wc -l
      19

파이프라인의 이 부분은 grep문자열을 검색합니다 1007( -F정규식 일치가 아닌 문자열 비교를 수행하기 때문에 이 플래그가 사용됩니다). 이 플래그로 인해 새 줄에 문자열의 각 개별 인스턴스가 반환됩니다 -o. 반환된 행 수가 계산됩니다 wc -l.

문자열이 입력 데이터 행에 두 번 나타나면 두 번 계산됩니다. 문자열이 다른 단어의 하위 문자열로 나타나는 경우에도 계산됩니다.

그리고 awk:

$ awk -v str="1007" '{ c += gsub(str, str) } END { print c }' file
19

이는 문자열의 발생 횟수를 계산하고 gsub()(함수는 교체가 수행된 횟수를 반환하며, 이를 각 입력 줄에 개별적으로 적용함) 끝에 총 횟수를 인쇄합니다. 관심 있는 문자열은 명령줄을 통해 전달됩니다 -v str="1007".

답변2

awk를 사용해야 하는 경우 다음 명령을 사용할 수 있습니다.

awk '{for (i=1;i<=NF;i++) if ( $i == "word/number that you want to search") c++ }'END'{print c}' filename

답변3

주문하다:

awk '{print gsub("1007",$0)}' filename | awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}'

-0-praveenk_22@:~ $ 

산출

awk '{print gsub("1007",$0)}' u.txt | awk 'BEGIN{sum=0}{sum=sum+$1}END{print sum}'
19
-0-praveenk_22@:~ $

관련 정보