$ 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
)で並べ替え、2番目の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