가장 일반적인 단어를 알파벳순으로 정렬하여 찾으려고 합니다. 예를 들어:
2 went
2 wonder
2 wont
3 began
3 little
3 moment
3 rabbit
3 thing
3 till
4 alice
4 bottle
4 came
4 sure
4 window
출력은 다음과 같아야 합니다 alice
(가장 높은 값을 가진 단어이며 알파벳 순서의 첫 번째 단어임).
지금 하고 있는데 sort -nr
다음에 무엇을 해야 할지 모르겠습니다.
답변1
두 필드를 기준으로 정렬하려면 해당 필드가 무엇인지, 정렬 방법을 알려주어야 합니다. 예를 들면 다음과 같습니다.
sort -k1,1nr -k2b < input
필드 1( )을 기준으로 -k1,1
숫자를 기준 으로 필드 1이 동일한 행의 경우 -k2
행의 나머지 부분( )을 기준으로 두 번 정렬합니다. 일반적으로 b
정렬 키( )의 선행 공백 (어휘적으로)을 제외합니다. 첫 번째 및 두 번째 필드). 예제 입력의 출력은 다음과 같습니다.
4 alice
4 bottle
4 came
4 sure
4 window
3 began
3 little
3 moment
3 rabbit
3 thing
3 till
2 went
2 wonder
2 wont
답변2
Jeff는 를 사용하여 귀하의 질문에만 답변했지만 sort
어쨌든 내 방법을 게시하겠다고 생각했습니다. 두 필드를 모두 기준으로 정렬하는 기능 에 대해 몰랐기 sort
때문에 입력을 "사전" 정렬하는 데만 사용했습니다. 각 섹션의 단어는 ZA별로 정렬되어 있으므로 순서를 바꾸면 됩니다. 이를 위해 다음을 사용하고 있습니다 awk
.
sort -r file | awk '{if($1==x){var=$0"\n"var} else{print var;var=$0;x=$1}} END{print var}' | grep -v ^$
그것이 하는 일은 grep -v ^$
비어 있는 출력의 첫 번째 줄을 삭제하는 것뿐입니다.awk