Hier sehen Sie ein Beispiel für die Aufteilung cut
der Eingabe in Felder mithilfe eines Leerzeichens als Trennzeichen und für den Abruf des zweiten Felds:
cut -f2 -d' '
Wie kann das Trennzeichen als Tabulator statt als Leerzeichen definiert werden?
Antwort1
Zwei Wege:
Drücken Sie Ctrl+ Vund dann, Tabum „wörtlich“ zu verwendenzitierter Einschub.
cut -f2 -d' ' infile
oder schreiben Sie es so, um es zu verwendenANSI-C-Zitat:
cut -f2 -d$'\t' infile
Die $'...'
Form der Anführungszeichen ist nicht Teil der POSIX-Shell-Sprache (Noch nicht), funktioniert aber neben Bash zumindest in ksh, mksh, zsh und Busybox.
Antwort2
Die Standardeinstellung ist „Tab“.
Sehen Sie sich dieManpage „cut“.
-d delim
Use delim as the field delimiter character instead of the tab
character.
Du kannst also einfach schreiben
cut -f 2
Antwort3
awk -F '\t' '{ print $2 }' inputfile
Dadurch wird das zweite durch Tabulatoren getrennte Feld jeder Eingabezeile aus extrahiert inputfile
.
Antwort4
Alternativ könnte man „cut“ in eine Funktion einbinden.
function getColumns ()
{
local -r delimiter="${1:?}"
local -r columns="${2:?}"
if [[ "$delimiter" == '\t' || "$delimter" == "tab" ]]; then
cut "--fields=${columns}"
return
fi
cut "--delimiter=${delimiter}" "--fields=${columns}"
}