![awk + 파일의 문자열 개수 계산](https://linux55.com/image/145985/awk%20%2B%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EA%B0%9C%EC%88%98%20%EA%B3%84%EC%82%B0.png)
우리는 이와 같은 거대한 파일을 가지고 있습니다
이것은 파일의 일부 목록입니다.
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@:~ $