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}'
É 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
...