Wie definiert man in Bash das Tabulatortrennzeichen mit „Cut“?

Wie definiert man in Bash das Tabulatortrennzeichen mit „Cut“?

Hier sehen Sie ein Beispiel für die Aufteilung cutder 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}" 
}

verwandte Informationen