¿Cómo definir el delimitador de 'tabulación' con 'corte' en Bash?

¿Cómo definir el delimitador de 'tabulación' con 'corte' en Bash?

A continuación se muestra un ejemplo del uso cutpara dividir la entrada en campos usando un delimitador de espacio y obtener el segundo campo:

cut -f2 -d' '

¿Cómo se puede definir el delimitador como una pestaña, en lugar de un espacio?

Respuesta1

Dos caminos:

Presione Ctrl+ Vy luego Tabpara usar "textualmente"inserto citado.

cut -f2 -d'   ' infile

o escríbelo así para usarlocotización ANSI-C:

cut -f2 -d$'\t' infile

La $'...'forma de comillas no forma parte del lenguaje shell POSIX (aún no), pero funciona al menos en ksh, mksh, zsh y Busybox además de Bash.

Respuesta2

La pestaña es la predeterminada.

Ver elcortar página de manual.

-d delim
         Use delim as the field delimiter character instead of the tab
         character.

Entonces puedes simplemente escribir

cut -f 2

Respuesta3

awk -F '\t' '{ print $2 }' inputfile

Esto extrae el segundo campo delimitado por tabulaciones de cada línea de entrada de inputfile.

Respuesta4

Alternativamente, se podría envolver cut en una función.

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}" 
}

información relacionada