acesso ao elemento do campo via awk

2

Eu tenho as seguintes colunas:

_111_   [555]
_222_   [666]
_333_   [777]
_444_   [888]

Eu quero acessar o 111 de _111_ . ou 888 de [888] .

Como acessar os elementos dos campos com awk .

    
por Mohammad Reza Rezwani 21.07.2014 / 12:57

2 respostas

1

tente isto:

  awk '{gsub("_|\[|\]","",$0); print $1 "-" $2;}' prova.txt

awk lê cada linha e usa "" (espaço em branco) como separador de campos, gsub remove chars: '_' '[' ']', então $ 1 e $ 2 contém token sem caracter indesejável.

Este script produzirá:

  111-555 
  222-666 
  333-777 
  444-888

Se você acessasse exatamente _111_ e [8888] como primeiro token e último token, tente isto:

  awk '{gsub("_|\[|\]","",$0);if (NR == 1) print $1;}END{print $2}' prova.txt

Nesse caso, a saída será:

 111
 888

Aqui está o manual do awk onde você pode encontrar mais detalhes.

    
por Lety 21.07.2014 / 13:55
1

Se você tiver esses dados em um arquivo file.txt

Acesse 111 como,

cat file.txt | tr -d "[]_" | awk 'NR==1 {print $1}'

Acesse 888 como

cat file.txt | tr -d "[]_" | awk 'NR==4 {print $2}'

sobre acessando os elementos dos campos com o awk .

    
por souravc 21.07.2014 / 13:55