Como obter múltiplos conjuntos de strings de um arquivo usando padrões específicos?

0

Editado

Este é o conteúdo do arquivo example.dat:

AAA*00*          *00*          *66*1234567890     *ZZ*ASD-LKJ        *170630*1933*U*00401*100000023*0*P*\~SS*IN*2035735845*JWN-DSD*20660606*0606*1023*X*DF4WE43R4RA~BIG*20660606*2771417*19990919*88146417~GE*3*1023~IEA*1*100000023~

Os dados de que preciso estão dentro de um segmento. Um segmento é separado por ~ e os dados que eu preciso são chamados de um elemento. Um elemento é separado por um * .

Este é o padrão para encontrar essas strings:

Segments         Element number          Needed Data
  AAA            6th, 8th & 13th         1234567890, ASD-LKJ & 100000023
  SS             6th                     1023
  BIG            4th                     88146417
  GE             1st                     3

Existe um comando que gera esses dados?

100000023    1023    3    1234567890    ASD-LKJ    88146417

Nota: No mundo real, o arquivo contém um conjunto realmente longo de strings e muitos segmentos, mas o padrão de segmentos e o local onde os elementos posicionados permanecem os mesmos.

    
por WashichawbachaW 04.07.2017 / 06:15

1 resposta

1

Isso gerará os dados do seu exemplo no formato de saída do seu exemplo

$ cat script.awk
BEGIN { FS="*"; }
$1=="AAA" { printf "%s\n%s\n%s\n", $7, $9, $14 }
$1=="SS"  { print $7 }
$1=="BIG" { print $5 }
$1=="GE"  { print $2 }
$ awk -f script.awk example.dat
1234567890     
ASD-LKJ        
100000023
1023
88146417
3
    
por 05.07.2017 / 04:22

Tags