디렉토리의 각 파일에 대해 가장 일반적인 단어를 찾는 방법은 무엇입니까?

디렉토리의 각 파일에 대해 가장 일반적인 단어를 찾는 방법은 무엇입니까?

디렉토리의 각 파일에 대해 가장 일반적인 단어를 찾아서 다음과 같이 인쇄해야 합니다.

12 my /home/test/file1.txt
5 you /home/test/file3.txt
7 hello /home/test/file4.txt

나는 시도했다:

for tmp in <path> 
    do
   tr -c '[:alnum:]' '[\n*]' < "$tmp" | sort | uniq -c | sort -nr | head  -1 
   done   

이건 작동하지 않아

답변1

일치 항목만 인쇄하는 문자열 상단의 단어를 추출하려면 grepwith를 사용하겠습니다 .-o

$ for file in *; do 
    printf '%s : %s\n' "$(grep -Eo '[[:alnum:]]+' "$file" | sort | uniq -c | 
        sort -rn | head -n1)" "$file" 
done
      8 no : file1
     10 so : file2
     12 in : file3

또는 grep이를 지원하지 않는 경우 모든 공백과 구두점을 로 바꾸고 필터를 사용하여 빈 줄을 건너뛴 다음 다음을 계산할 -o수 있습니다.tr\ngrep .

$ for file in *; do 
    printf '%s : %s\n' "$(tr '[[:punct:]][[:space:]]' '\n' < "$file" | grep . | 
      sort | uniq -c | sort -rn | head -n1)" "$file" 
done
  8 no : file1
 10 so : file2
 12 in : file3

관련 정보