Unterschied zwischen Gnusort -k2 und -k2,2

Unterschied zwischen Gnusort -k2 und -k2,2
less file.txt

01 Joe x
02 Marie y
03 Albert p
04 Dave k

Ich möchte nach Spalte 2 sortieren. Allerdings führen die beiden folgenden Befehle zu derselben Ausgabe. Es wäre toll zu wissen, was der Unterschied zwischen der Verwendung von -k2 und -k2,2 ist.

less file.txt | sort -k2Undless file.txt | sort -k2,2

Ausgabe:

03 Albert p
04 Dave k
01 Joe x
02 Marie y

Antwort1

Die Angabe nach dem Komma definiert ein stop position(das standardmäßig dem entspricht end of the line)

man 1 sort:

-k, --key=KEYDEFSortierung nach Schlüssel; KEYDEF gibt Ort und Typ an

KEYDEF steht F[.C][OPTS][,F[.C][OPTS]]für die Start- und Stoppposition, wobei F eine Feldnummer und C eine Zeichenposition im Feld ist. Beide haben den Ursprung 1 und die Stoppposition ist standardmäßig das Zeilenende.


Betrachten Sie beispielsweise eine Eingabe file.txt:

03 Albert p
04 Albert a
  • Bei der Sortierung mit -k2würde Albert avor stehenAlbert p
  • Bei Verwendung von -k2,2wird der dritte Schlüssel beim Sortieren ignoriert.

oder ein anderes Beispiel:

03 Albert p
04 Aave k

Es ist möglich, nach dem ersten Zeichen des zweiten Schlüssels zu sortieren, indem man Folgendes verwendet -k2,2.2:

$ sort -k2,2.2 file.txt
03 Albert p
04 Aave k
  • Wenn -k2verwendet, Aawürde vor sortiert werdenAl

verwandte Informationen