列を独立してソートする方法は? [閉鎖]

列を独立してソートする方法は? [閉鎖]
$ 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

おすすめ記事