shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] duvida retirar linha do arquivo


From: Tiago Peczenyj
Subject: Re: [shell-script] duvida retirar linha do arquivo
Date: Mon, 10 Apr 2017 17:37:44 +0200

ola

primeiramente, se este arquivo é importante, guarde uma copia.

segundo vc precisa definir o que seria um registro e o que seria um campo no seu arquivo.

vamos assumir que cada registro é separado por 'unix newline' e cada campo é separador por ; -- um arquivo csv.

de cara temos um problema que é o header. qualquer solução que possamos apresentar não pode tocar o cabeçalho do arquivo ( as vezes precisamos tomar precauções extras -- não parece ser o caso ).

existem duas abordagens.

1. vc imprime tudo MENOS o que não entra no padrão ( sed )

2. vc imprime APENAS o que entra no padrão ( awk , grep com algum cuidado )

e o padrão é: o primeiro campo não pode ser vazio.

aqui interessa perguntar: o que é um campo vazio? ele vai ter tamanho 0? ele pode ter um ou mais espaços em branco/tab/etc?

usar awk vai ser interessante pois vc preserva o arquivo original e gera um arquivo contendo apenas o que vc quer.

formato purista:

awk -F ';' 'NR == 1 { print } NR > 1 && length($1) > 0 { print }' arquivo.entrada > arquivo.saida

se isso não atende ao seu problema então alguma das premissas que eu assumi neste exemplo não funciona bem assim na pratica.

Abraços

Tiago

2017-04-10 2:19 GMT+02:00 Leandro Valiengo address@hidden [shell-script] <address@hidden>:
 

Prezados, 

boa notie. 

gero arquivo final para o usuário e estou gerando com lixo, como: 

Chave;Tipo;Complemento;StatusCritica;Campo;CodErro;MsgErro;CampoErrado;Origem;NmPrograma;ChaveOrigem;DtMovimento
;;                                                                                      ;;;;;               ;;;                                                            ;
;;                                                                                      ;;;;;               ;;;                                                            ;
0820394850932845098324242424090980980988250982304950-923840-843;
0820394850932845098324242424090980980988250982304950-9238404843;

Preciso retirar somente onde a primeira posição nao vem preenchida. 

abs,




--
Tiago B. Peczenyj

http://about.me/peczenyj

reply via email to

[Prev in Thread] Current Thread [Next in Thread]