$ sort -t $'\t' -k 1rn,1 -k 2,2rn -k 3f,4 listaprezzi
2050 900 bananas 5
1905 700 grapes 17
250 4000 oranges 10
230 9200 figs 4
220 5000 lemons 10
200 8000 pears 8
listaprezzi
첫 번째 열의 숫자를 역순으로(옵션 rn
), 두 번째 열을 rn
, 세 번째 열을 알파벳순( ) 으로 정렬하고 싶습니다 f
. 올바른 명령은 무엇입니까?
나는 여러 가지 방법을 시도했지만 성공하지 못했습니다.
답변1
귀하의 질문을 올바르게 이해했다면 데이터를 다시 정렬하고 싶습니다. 즉, 동일한 행의 여러 필드를 독립적으로 정렬(위 또는 아래로)하고 싶습니다. bare 로는 그렇게 할 수 없습니다 sort
. 예를 들어 의 도움을 받아 추가 도구를 사용해야 하며 awk
다음 paste
과 같이 작성할 수 있습니다.
$ paste <(awk '{print $1}' listaprezzi | sort -nr) <(awk '{print $2}' \
listaprezzi | sort -nr) <(awk '{print $3}' listaprezzi | sort) <(awk \
'{print $4}' listaprezzi)
그리고 그 결과는
2050 9200 bananas 5
1905 8000 figs 17
250 5000 grapes 10
230 4000 lemons 4
220 900 oranges 10
200 700 pears 8