$ 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
、追加のツールを使用する必要があります。たとえば、 の助けを借りて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