각 텍스트 파일의 동일한 줄 수

각 텍스트 파일의 동일한 줄 수

나는 30개가 넘는 서로 다른 텍스트 파일을 가지고 있는데, 각 파일에는 동일한 단어가 서로 다른 시간에 반복됩니다. 예를 들어 text1 "esr"에서는 12번, text2 "esr"에서는 21번 반복됩니다.

단일 명령을 사용하여 단어가 반복되는 횟수를 출력할 수 있습니까?

답변1

그리고grep+화장실관로:

for f in *.txt; do echo -n "$f "; grep -wo 'esr' "$f" | wc -l; done

grep옵션:

  • -w- 단어 정규식(전체/별도 단어 일치)

  • -o- 일치하는 하위 문자열만 인쇄


  • wc -l- 각 파일의 줄 수(우리의 경우 일치하는 단어)를 셉니다.

답변2

strings ./*.txt|tr " " "\n"|sort|uniq -c

답변3

사용grep모든 인스턴스를 찾은 다음 다음을 사용하여 고유 행 수를 계산합니다.uniq -c.

grep "word" * | sort | uniq -c

모든 입력 파일을 일치시키려면 다음을 사용하십시오 grep -c.

grep -c "word" * 

답변4

여러 파일의 모든 단어 수를 계산하려면 AWK다음 예를 사용할 수 있습니다.

awk 'BEGIN{RS="[[:space:]]+"}
     {counts[$0]++}
     END{for(word in counts){print word " - " counts[word]}
     ' file1 file2 file...

그러면 각 단어가 별도의 줄에 있는 것처럼 파일이 처리됩니다.그건BEGIN{RS="[[:space:]]+"} 부분, 그런 다음 하나를 볼 때마다 계산합니다.철사. 해당 BEGIN부분을 제거하면 각각이 계산됩니다.정상철사.

특정 단어 1개에만 관심이 있는 경우 END블록을 다음과 같이 변경할 수 있습니다.

END{print counts["esr"]}

이는 "esr"이 발생한 횟수만 인쇄하지만 대소문자를 구분한다는 점을 기억하세요.

대소문자 구분을 제거하려면 counts[tolower($0)]++또는 를 사용하십시오 counts[toupper($0)]++.

카운트가 한 파일에서 다음 파일로 이동할 때 데이터를 인쇄하는 검사를 추가할 수도 있습니다.

관련 정보