列を個別に並べ替えるにはどうすればいいですか?

列を個別に並べ替えるにはどうすればいいですか?
$ 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の 1 列目を数値の逆順 (オプションrn) で並べ替え、2 列目も で並べ替えrn、3 列目をアルファベット順 ( )で並べ替えたいです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

関連情報