파일의 단어 정렬

파일의 단어 정렬

나에게는 극복할 수 없는 몇 가지 문제가 있습니다. 텍스트 파일의 처음 N 단어 수를 계산해야 합니다. 그런 다음 내림차순으로 인쇄한 다음 발생 횟수를 인쇄해야 합니다. 단어는 알파벳순으로 정렬되어야 합니다.

예를 들어 ""라는 단어가 6번 나타나면" , 5 단어"비", 5단어n은 2입니다. 다음을 인쇄하겠습니다.

6

B5

"la"라는 단어가 10번 발생하고 "hi"라는 단어가 5번 발생하고 "zzz"가 5번 발생하고 "arr"가 5번 발생하고 n이 3인 경우 다음을 인쇄하겠습니다.

10을 당겨

도착 5

안녕하세요 5

(zzz는 일부러 생략했습니다.)

문제는 내 스크립트(아래)가 한 번에 한 단어만 인쇄한다는 것입니다.

tr  [:space:] '\n' <$1| uniq -c|sort -rnuk1,1|awk '{print $2,$1}'|head -n

추가 기능으로 스크립트가 파일의 첫 번째 m 줄에서 단어 발생 횟수를 검색할 수 있었으면 좋겠습니다.

답변1

첫 번째 질문에 대한 답은 (혹시 관심 있으신 분 계시나요?) 입니다.

tr  [:space:] '\n' <$1| sort |uniq -c|sort -k1rn -k2n|awk '{print $2,$1}'|head -12

이 부분은 아직 어떻게 해야할지 모르겠습니다.

추가 기능으로 스크립트가 파일의 첫 번째 m 줄에서 단어 발생 횟수를 검색할 수 있었으면 좋겠습니다.

답변2

당신의 사용법은 tr현명합니다. 하지만 인접한 행만 보기 때문에 sort먼저 사용해야 합니다 . 그래서 우리는uniquniq

cat file.txt | sort | uniq -c | sort -r | awk '{print $2, $1}' | head -n 10

또한 보시다시피 이 경우 정렬에 -k및 를 사용하는 -n것은 (잘못은 아니지만) 불필요합니다 .

관련 정보