Questão acesso ao elemento do campo via awk


Eu tenho as seguintes colunas:

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

Quero acessar o 111 a partir de _111_. ou 888 a partir de [888].

Como acessar os elementos dos campos com awk.


2
2017-07-21 10:57


origem




Respostas:


tente isto:

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

awk leia cada linha e use "" (espaço em branco) como separador de campo, gsub remove chars: '_' '[' ']', então $ 1 e $ 2 conterão 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

Neste caso, a saída será:

 111
 888

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


1
2017-07-21 11:55





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

Acesso 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 awk.


1
2017-07-21 11:55