awk não usará '||' como um delimitador de campo

7

Estou tentando usar o awk para cortar com um delimitador de vários caracteres

echo 'f1##f2' |awk -F '##' '{print $2}'

Imprime f2 . Considerando que

echo 'f1||f2' |awk -F '||' '{print $1}'

imprime f1||f2 .

Alguém pode explicar o que está acontecendo?

    
por overtomanu 12.09.2017 / 17:38

1 resposta

11

A barra vertical char | é tratada como um caractere especial no seu caso e deve ser ignorada:

echo "f1||f2" |awk -F'\|\|' '{print $1}'
f1

Como alternativa, você pode colocar | na classe de caracteres:

echo "f1||f2||f3" |awk -F'[|]{2}' '{print $3}'
f3
    
por 12.09.2017 / 17:41

Tags