如何對列進行獨立排序?

如何對列進行獨立排序?
$ 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,您需要使用其他工具,例如在 的幫助下awkpaste您可以編寫以下內容:

$ 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

相關內容