Ajuda com comando Sed e Awk

1. Ajuda com comando Sed e Awk

Roberto
robertolwcas

(usa Outra)

Enviado em 14/10/2021 - 17:47h

Pessoal estou tendo o seguinte problema. Alguém consegue me sugerir uma correção no comendo executado?

Na execução do comando abaixo, eu consigo separar as saídas por linha e separar cada valor por ";" para posteriormente importar no excel. O problema é que cada linha gerada, tem um número diferente de "colunas". No segundo bloco por exemplo não tem a linha ownerid. Ja no primeiro não tem owner-c...

cat saida.txt | awk -F: '{print $2";"}' | sed -e 's/^ *//' -e '1{$p;x;d;}' -e '/^NR/!{H;$!d;x;s/\n//g;b;}' -e 'x;s/\n//g;${p;x;}'

Acho que a melhor solução talvez seria "imprimir" uma coluna em branco nos casos onde não possui a coluna.


saixa.txt

aut-num: NR9820
owner: NOME DO OWNER1
ownerid: 99.558.157/0001-62
responsible: Nome do Responsável
person: Nome da pessoa1
e-mail: email@dominio.com.br

aut-num: NR98900
owner: NOME DO OWNER2
responsible: Nome do Responsável
owner-c: ARTEI
person: Nome da pessoa1
e-mail: email1@dominio.com.br
person: Nome da pessoa2
e-mail: email2@dominio.com.br

...

Resultado:

NR9820;NOME DO OWNER1;99.558.157/0001-62;Nome do Responsável;Nome da pessoa1;email@dominio.com.br
NR98900;NOME DO OWNER2;Nome do Responsável;ARTEI;Nome da pessoa1;email1@dominio.com.br;Nome da pessoa2;email2@dominio.com.br

...


  


2. Re: Ajuda com comando Sed e Awk

leandro peçanha scardua
leandropscardua

(usa Ubuntu)

Enviado em 14/10/2021 - 19:10h


Acho que a melhor solução talvez seria "imprimir" uma coluna em branco nos casos onde não possui a coluna. 

Parece ser a melhor opção.


3. Re: Ajuda com comando Sed e Awk

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 16/10/2021 - 00:20h

Boa noite Roberto.
Segue, mostra em qual registro tem o "erro".
cat texto.txt
aut-num: NR9820
owner: NOME DO OWNER1
ownerid: 99.558.157/0001-62
responsible: Nome do Responsável01
owner-c: ARTEI001
person: Nome da pessoa1
e-mail: email01@dominio.com.br

aut-num: NR8930
owner: NOME DO OWNER2
ownerid: 99.558.157/0001-65
owner-c: ARTEI002
person: Nome da pessoa2
e-mail: email02@dominio.com.br

aut-num: NR8940
owner: NOME DO OWNER3
ownerid: 99.123.157/0001-65
responsible: Nome do Responsável03
owner-c: ARTEI003
person: Nome da pessoa3
e-mail: email03@dominio.com.br

awk 'BEGIN{FS="\n";RS="\n\n";ORS="\n\n";} {if($1~/aut-num:/ && $2~/owner:/ && $3~/ownerid:/ && $4~/responsible:/ && $5~/owner-c:/)print "Reg:" NR"\n"$0;else print "Reg: "NR" Erro"}' texto.txt 


Outro:
awk 'BEGIN{FS="\n";RS="\n\n";split("aut-num: owner: ownerid: responsible: owner-c: person: e-mail:", ttl, " ")}
{if($1~ttl[1])print $1;else print ttl[1]};
{if($2~ttl[2])print $2;else print ttl[2]};
{if($3~ttl[3])print $3;else print ttl[3]};
{if($4~ttl[4])print $4;else print ttl[4]};
{if($5~ttl[5])print $5;else print ttl[5]};
{if($6~ttl[6])print $6;else print ttl[6]};
{if($7~ttl[7])print $7;else print ttl[7]};{print ""}' texto.txt


______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/|sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts