Discussion:
[shell-script] duvida retirar linha do arquivo
Leandro Valiengo leandro_valiengo@yahoo.com.br [shell-script]
2017-04-10 00:19:51 UTC
Permalink
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,
itamarnet@yahoo.com.br [shell-script]
2017-04-10 02:10:33 UTC
Permalink
Caro Leandro

Suponho que o programa seja em Shell Script então pode colocar ao final

sed '/^;/d'

ou

awk -F ';' 'length($1)'


Mas acredito que o método gerador poderia evitar isso internamente.

Não sei o que mais sugerir, sua descrição foi muito suscinta.

[]'s
Itamar
Leandro Valiengo leandro_valiengo@yahoo.com.br [shell-script]
2017-04-10 02:50:04 UTC
Permalink
Oi Itamar, boa noite. 
Usei as duas formas e não retirou. impressionante. 
Arquivo com erro: 
Chave;Tipo;Complemento;StatusCritica;Campo;CodErro;MsgErro;CampoErrado;Origem;NmPrograma;ChaveOrigem;DtMovimento;;                                                                                      ;;;;;               ;;;                                                            ;;;                                                                                      ;;;;;               ;;;                                                            ;

Na linha de comando no unix ele retira. Porem quando vejo o arquivo, ainda está lá....veja: 
sed '/^;/d' BS.RSAP.RSAP9451.CTBL.R01.RETChave;Tipo;Complemento;StatusCritica;Campo;CodErro;MsgErro;CampoErrado;Origem;NmPrograma;ChaveOrigem;DtMovimento
Ou: 
awk -F';' 'length($1)' BS.RSAP.RSAP9451.CTBL.R01.RETChave;Tipo;Complemento;StatusCritica;Campo;CodErro;MsgErro;CampoErrado;Origem;NmPrograma;ChaveOrigem;DtMovimento
abs,


Em Domingo, 9 de Abril de 2017 23:10, "***@yahoo.com.br [shell-script]" <shell-***@yahoogrupos.com.br> escreveu:


  Caro Leandro

Suponho que o programa seja em Shell Script então pode colocar ao final

sed '/^;/d'

ou

awk -F ';' 'length($1)'


Mas acredito que o método gerador poderia evitar isso internamente.

Não sei o que mais sugerir, sua descrição foi muito suscinta.

[]'s
Itamar #yiv0576232736 #yiv0576232736 -- #yiv0576232736ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv0576232736 #yiv0576232736ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv0576232736 #yiv0576232736ygrp-mkp #yiv0576232736hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv0576232736 #yiv0576232736ygrp-mkp #yiv0576232736ads {margin-bottom:10px;}#yiv0576232736 #yiv0576232736ygrp-mkp .yiv0576232736ad {padding:0 0;}#yiv0576232736 #yiv0576232736ygrp-mkp .yiv0576232736ad p {margin:0;}#yiv0576232736 #yiv0576232736ygrp-mkp .yiv0576232736ad a {color:#0000ff;text-decoration:none;}#yiv0576232736 #yiv0576232736ygrp-sponsor #yiv0576232736ygrp-lc {font-family:Arial;}#yiv0576232736 #yiv0576232736ygrp-sponsor #yiv0576232736ygrp-lc #yiv0576232736hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv0576232736 #yiv0576232736ygrp-sponsor #yiv0576232736ygrp-lc .yiv0576232736ad {margin-bottom:10px;padding:0 0;}#yiv0576232736 #yiv0576232736actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv0576232736 #yiv0576232736activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv0576232736 #yiv0576232736activity span {font-weight:700;}#yiv0576232736 #yiv0576232736activity span:first-child {text-transform:uppercase;}#yiv0576232736 #yiv0576232736activity span a {color:#5085b6;text-decoration:none;}#yiv0576232736 #yiv0576232736activity span span {color:#ff7900;}#yiv0576232736 #yiv0576232736activity span .yiv0576232736underline {text-decoration:underline;}#yiv0576232736 .yiv0576232736attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv0576232736 .yiv0576232736attach div a {text-decoration:none;}#yiv0576232736 .yiv0576232736attach img {border:none;padding-right:5px;}#yiv0576232736 .yiv0576232736attach label {display:block;margin-bottom:5px;}#yiv0576232736 .yiv0576232736attach label a {text-decoration:none;}#yiv0576232736 blockquote {margin:0 0 0 4px;}#yiv0576232736 .yiv0576232736bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv0576232736 .yiv0576232736bold a {text-decoration:none;}#yiv0576232736 dd.yiv0576232736last p a {font-family:Verdana;font-weight:700;}#yiv0576232736 dd.yiv0576232736last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv0576232736 dd.yiv0576232736last p span.yiv0576232736yshortcuts {margin-right:0;}#yiv0576232736 div.yiv0576232736attach-table div div a {text-decoration:none;}#yiv0576232736 div.yiv0576232736attach-table {width:400px;}#yiv0576232736 div.yiv0576232736file-title a, #yiv0576232736 div.yiv0576232736file-title a:active, #yiv0576232736 div.yiv0576232736file-title a:hover, #yiv0576232736 div.yiv0576232736file-title a:visited {text-decoration:none;}#yiv0576232736 div.yiv0576232736photo-title a, #yiv0576232736 div.yiv0576232736photo-title a:active, #yiv0576232736 div.yiv0576232736photo-title a:hover, #yiv0576232736 div.yiv0576232736photo-title a:visited {text-decoration:none;}#yiv0576232736 div#yiv0576232736ygrp-mlmsg #yiv0576232736ygrp-msg p a span.yiv0576232736yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv0576232736 .yiv0576232736green {color:#628c2a;}#yiv0576232736 .yiv0576232736MsoNormal {margin:0 0 0 0;}#yiv0576232736 o {font-size:0;}#yiv0576232736 #yiv0576232736photos div {float:left;width:72px;}#yiv0576232736 #yiv0576232736photos div div {border:1px solid #666666;height:62px;overflow:hidden;width:62px;}#yiv0576232736 #yiv0576232736photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv0576232736 #yiv0576232736reco-category {font-size:77%;}#yiv0576232736 #yiv0576232736reco-desc {font-size:77%;}#yiv0576232736 .yiv0576232736replbq {margin:4px;}#yiv0576232736 #yiv0576232736ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv0576232736 #yiv0576232736ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv0576232736 #yiv0576232736ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv0576232736 #yiv0576232736ygrp-mlmsg select, #yiv0576232736 input, #yiv0576232736 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv0576232736 #yiv0576232736ygrp-mlmsg pre, #yiv0576232736 code {font:115% monospace;}#yiv0576232736 #yiv0576232736ygrp-mlmsg * {line-height:1.22em;}#yiv0576232736 #yiv0576232736ygrp-mlmsg #yiv0576232736logo {padding-bottom:10px;}#yiv0576232736 #yiv0576232736ygrp-msg p a {font-family:Verdana;}#yiv0576232736 #yiv0576232736ygrp-msg p#yiv0576232736attach-count span {color:#1E66AE;font-weight:700;}#yiv0576232736 #yiv0576232736ygrp-reco #yiv0576232736reco-head {color:#ff7900;font-weight:700;}#yiv0576232736 #yiv0576232736ygrp-reco {margin-bottom:20px;padding:0px;}#yiv0576232736 #yiv0576232736ygrp-sponsor #yiv0576232736ov li a {font-size:130%;text-decoration:none;}#yiv0576232736 #yiv0576232736ygrp-sponsor #yiv0576232736ov li {font-size:77%;list-style-type:square;padding:6px 0;}#yiv0576232736 #yiv0576232736ygrp-sponsor #yiv0576232736ov ul {margin:0;padding:0 0 0 8px;}#yiv0576232736 #yiv0576232736ygrp-text {font-family:Georgia;}#yiv0576232736 #yiv0576232736ygrp-text p {margin:0 0 1em 0;}#yiv0576232736 #yiv0576232736ygrp-text tt {font-size:120%;}#yiv0576232736 #yiv0576232736ygrp-vital ul li:last-child {border-right:none !important;}#yiv0576232736
itamarnet@yahoo.com.br [shell-script]
2017-04-10 03:22:02 UTC
Permalink
Leandro

Como foi suscinto demais não deu para entender o que queria, então esses comandos realmente apenas retiram na linha de comando e era para redirecionar para o arquivo final:

Então seria por exemplo:

sed '/^;/d' BS.RSAP.RSAP9451.CTBL.R01.RET > BS.RSAP.RSAP9451.CTBL.R01.RET.2
ou:
awk -F';' 'length($1)' BS.RSAP.RSAP9451.CTBL.R01.RET > BS.RSAP.RSAP9451.CTBL.R01.RET.2

E depois poderia renomear as saídas, ou renomear antes os arquivos de entrada.

Não sei a versão sua do sed, mas com a opção -i ele altera no próprio arquivo:

sed -i '/^;/d' BS.RSAP.RSAP9451.CTBL.R01.RET

se justapor na opção no -i um texto, vai criar um arquivo de backup usando esse texto como sufixo sem as alterações:

sed -i.bak '/^;/d' BS.RSAP.RSAP9451.CTBL.R01.RET

Nessa última sugestão altera o arquivo, mas ter um backup: BS.RSAP.RSAP9451.CTBL.R01.RET.bak

Isso ajuda?

[]'s
Itamar
Terminal Root terminalroot.com.br@gmail.com [shell-script]
2017-04-10 11:12:25 UTC
Permalink
Olá, Leandro!

É necessário você explicar melhor o que deseja retirar, se possível mostra
como o arquivo está aparecendo e como você deseja que apareça.

Att,

Marcos
Post by ***@yahoo.com.br [shell-script]
Leandro
Como foi suscinto demais não deu para entender o que queria, então esses
comandos realmente apenas retiram na linha de comando e era para
sed '/^;/d' BS.RSAP.RSAP9451.CTBL.R01.RET > BS.RSAP.RSAP9451.CTBL.R01.RET.
2
awk -F';' 'length($1)' BS.RSAP.RSAP9451.CTBL.R01.RET >
BS.RSAP.RSAP9451.CTBL.R01.RET.2
E depois poderia renomear as saídas, ou renomear antes os arquivos de entrada.
Não sei a versão sua do sed, mas com a opção -i ele altera no próprio
sed -i '/^;/d' BS.RSAP.RSAP9451.CTBL.R01.RET
se justapor na opção no -i um texto, vai criar um arquivo de backup usando
sed -i.bak '/^;/d' BS.RSAP.RSAP9451.CTBL.R01.RET
BS.RSAP.RSAP9451.CTBL.R01.RET.bak
Isso ajuda?
[]'s
Itamar
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2017-04-10 15:30:28 UTC
Permalink
As pessoas, via de regra, acham que lista é twitter. Vc tem exĺicar tudo em
140 letras e o pessoal que quer ajudar, que se vire...

Acho que deveríamos não mais ajudar a quem não nos ajuda...

Abcs,
Julio

*​Damos treinamento em sua empresa por *
*um preço, no mínimo, 50% mais barato que qualquer curso,*
*com certificado e nota fiscal.*

​​
Nosso time de instrutores *in company* é formado somente por
​
​
autores
​ ​
​
de
*Best Sellers​ ​*​laureados ​sobre os temas. P. exemplo:

Shell básico e Programação em Shell Julio Neves
Bacula Heitor Medrado
Zabbix Adail Host
Produção Gráfica e Videografismo Cadunico
Post by Terminal Root ***@gmail.com [shell-script]
Olá, Leandro!
É necessário você explicar melhor o que deseja retirar, se possível mostra
como o arquivo está aparecendo e como você deseja que apareça.
Att,
Marcos
Post by ***@yahoo.com.br [shell-script]
Leandro
Como foi suscinto demais não deu para entender o que queria, então esses
comandos realmente apenas retiram na linha de comando e era para
sed '/^;/d' BS.RSAP.RSAP9451.CTBL.R01.RET > BS.RSAP.RSAP9451.CTBL.R01.RET.
2
awk -F';' 'length($1)' BS.RSAP.RSAP9451.CTBL.R01.RET >
BS.RSAP.RSAP9451.CTBL.R01.RET.2
E depois poderia renomear as saídas, ou renomear antes os arquivos de entrada.
Não sei a versão sua do sed, mas com a opção -i ele altera no próprio
sed -i '/^;/d' BS.RSAP.RSAP9451.CTBL.R01.RET
se justapor na opção no -i um texto, vai criar um arquivo de backup
sed -i.bak '/^;/d' BS.RSAP.RSAP9451.CTBL.R01.RET
BS.RSAP.RSAP9451.CTBL.R01.RET.bak
Isso ajuda?
[]'s
Itamar
Tiago Peczenyj tiago.peczenyj@gmail.com [shell-script]
2017-04-10 15:37:44 UTC
Permalink
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
Prezados,
boa notie.
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
Loading...