나에게는 극복할 수 없는 몇 가지 문제가 있습니다. 텍스트 파일의 처음 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
먼저 사용해야 합니다 . 그래서 우리는uniq
uniq
cat file.txt | sort | uniq -c | sort -r | awk '{print $2, $1}' | head -n 10
또한 보시다시피 이 경우 정렬에 -k
및 를 사용하는 -n
것은 (잘못은 아니지만) 불필요합니다 .