나는 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
답변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)]++
.
카운트가 한 파일에서 다음 파일로 이동할 때 데이터를 인쇄하는 검사를 추가할 수도 있습니다.