Wie kann ich Spalten unabhängig voneinander sortieren?

Wie kann ich Spalten unabhängig voneinander sortieren?
$ 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

Ich möchte die 1. Spalte listaprezzinumerisch in umgekehrter Reihenfolge sortieren (Option rn), die 2. ebenfalls rnund die 3. alphabetisch ( f). Was ist der richtige Befehl?

Ich habe vieles ausprobiert, aber ohne Erfolg.

Antwort1

Wenn ich Ihre Frage richtig verstehe, möchten Sie Ihre Daten neu anordnen, d. h. verschiedene Felder derselben Zeile unabhängig voneinander (nach oben oder unten) sortieren. Dies ist mit bare nicht möglich sort, Sie müssen zusätzliche Tools verwenden, beispielsweise mithilfe von awkund pasteSie können Folgendes schreiben:

$ paste <(awk '{print $1}' listaprezzi | sort -nr) <(awk '{print $2}' \
  listaprezzi | sort -nr) <(awk '{print $3}' listaprezzi | sort) <(awk \
  '{print $4}' listaprezzi)

Und das Ergebnis ist

2050    9200    bananas   5
1905    8000    figs      17
250     5000    grapes    10
230     4000    lemons    4
220     900     oranges   10
200     700     pears     8

verwandte Informationen