如何对列进行独立排序?

如何对列进行独立排序?
$ 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

相关内容