was bedeutet dieser Sortierbefehl? cat temp.txt | sort -t$'\t'

was bedeutet dieser Sortierbefehl? cat temp.txt | sort -t$'\t'

Auf der Manpage von sort wird -t verwendet, um einen Feldtrenner anzugeben. Ich weiß jedoch nicht, was die -t$'\t'Form bedeutet?

Antwort1

Bash ANSI-C-Zitate. Wenn Sie einen String wie diesen umschließen $'string', wird er nach den gleichen Regeln wie ein C-String erweitert. In Ihrem Fall $'t'wird daraus einfach 't', aber wenn es so wäre, $'\t'wäre es ein Tabulatorzeichen. Dies ist etwas anders als die Verwendung von doppelten Anführungszeichen, da "string"doppelte Anführungszeichen Bash-Ersetzungen ermöglichen (z. B. Variablenerweiterung).

Antwort2

Das '$' nach der Option -t wird verwendet, um ein Zeichen anzugeben, das mehr als 7 Bits für seine Darstellung benötigt. Beispielsweise für eine neue Zeile: '\n', für einen Tabulator '\t'. Wenn Sie es so machen:

sort -t '\t' 

Sort gibt wahrscheinlich eine Fehlermeldung aus, die besagt, dass Sie zu viele Zeichen verwenden, da es versucht, das „\“ und das „t“ wörtlich zu lesen.

Daher wird in Ihrem Beispiel der Backslash weggelassen.

Dasselbe gilt beispielsweise auch für den Cut-Befehl:

cut -d$'\t' 

verwandte Informationen