Imprimindo mais de um campo

4

Existe uma maneira de imprimir vários campos com um único comando de linha?

Eu quero imprimir $ 3 a $ NF, como abaixo:

awk -F[:] '{print $3,$4,$5 .... $NF}'

No entanto, não é possível com grande número de campos e é propenso a erros.

    
por Eng7 03.10.2015 / 13:48

1 resposta

7

A única maneira que eu sei é fazer um loop em cada campo:

$ echo "a:b:c:d:e:f:g:h:i" | 
    awk -F":" '{for(i=3;i<=NF-1;i++){printf "%s ", $i}print $NF}'
c d e f g h i

Como alternativa, você pode usar apenas perl :

$ echo "a:b:c:d:e:f:g:h:i" | perl -F":" -lane 'print "@F[2..$#F]"'
c d e f g h i

Ou cut :

$ echo "a:b:c:d:e:f:g:h:i" | cut -d: -f3- 
c:d:e:f:g:h:i

Ou sed :

$ echo "a:b:c:d:e:f:g:h:i" | sed 's/\([^:]*:\)\{2\}//'
c:d:e:f:g:h:i
    
por 03.10.2015 / 13:54