$ 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 listaprezzi
numerisch in umgekehrter Reihenfolge sortieren (Option rn
), die 2. ebenfalls rn
und 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 awk
und paste
Sie 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