Como usar um separador de campo e ignorar linhas no awk sem canalizar?

0

É possível se livrar do comando de corte nesta linha e sem canalizar para outro comando?

awk 'NR > 1 {print l}{l=$2}' filename | cut -d':' -f2

Detalhes, se você quiser ou precisar deles:

[Esta é uma questão de interesse do que de necessidade - eu posso / usei cut como acima para fazer o trabalho facilmente]

Consegui obter a segunda coluna enquanto ignorava a última linha do arquivo com NR > 1{print l}{l=$2} .

Basicamente é um banco de dados de arquivos simples (observe a última linha de conteúdo que não é de dados) e eu preciso dos valores de cada field1 :

$ cat file
1    field1:value1    field2:value2    ...
                   .
                   .
                   .
N    field1:value1    field2:value2    ...
other.parseable info.that is.unnecessary to.me

A tentativa do sinalizador -F não funciona porque parece que ele altera os números das colunas, pois está fazendo o "recorte" primeiro:

$ awk -F ':' 'NR > 1 {print l}{l=$2}' file
value1   field2
value1   field2
...
    
por galois 14.09.2017 / 23:39

1 resposta

5

Você pode usar a função split de awk .

awk '{ split($2, var, /:/ ); print var[2] }'

Ou use vários delimitadores:

awk -F'[ :]+' '{print $3}'
    
por 14.09.2017 / 23:57

Tags