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

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

Re: [shell-script] SED: Inserir quebra de página após XX caracteres


From: Fernando Luizao
Subject: Re: [shell-script] SED: Inserir quebra de página após XX caracteres
Date: Wed, 2 Jun 2010 07:59:30 -0700 (PDT)

Imagino que seu arquivo esteja assim:

cat arquivo
lalal
lele
<SignatureValue>
dgdfgfd vbcvbcvbcv sddfhgdgb cvretghddg cvbcvbcvbvaczxc sdgdf dfgdfg 
dfgdfgdfgdfgdfgdfg
dgdfgfd vbcvbcvbcv sddfhgdgb cvretghddg cvbcvbcvbvaczxc sdgdf dfgdfg 
dfgdfgdfgdfgdfgdfg
dgdfgfd vbcvbcvbcv sddfhgdgb cvretghddg cvbcvbcvbvaczxc sdgdf dfgdfg 
dfgdfgdfgdfgdfgdfg
dgdfgfd vbcvbcvbcv sddfhgdgb cvretghddg cvbcvbcvbvaczxc sdgdf dfgdfg 
dfgdfgdfgdfgdfgdfg
</SignatureValue>
vbcvb
xxfglsd

Eu usei o seguinte:

sed '/<SignatureValue>/,/<\/SignatureValue>/!d; /SignatureValue/d; 
s/\(.\{73\}\)/\1\n/' arquivo

Explicando cada trecho do sed (execute passo a passo para entender melhor):

sed '/<SignatureValue>/,/<\/SignatureValue>/!d' arquivo

Extrai tudo entre as tags que vc quer.

sed '/<SignatureValue>/,/<\/SignatureValue>/!d; 
/SignatureValue/d' arquivo

Remove as tags

sed '/<SignatureValue>/,/<\/SignatureValue>/!d; 
/SignatureValue/d; s/\(.\{73\}\)/\1\n/' arquivo

Monta um grupo com 73 caracteres, e faz a substituição adicionando uma quebra 
de linha depois.

Não sei se resolve para o seu caso, mas já deve dar uma idéia.

Abraço

--- Em qua, 2/6/10, Cristiano <address@hidden> escreveu:

De: Cristiano <address@hidden>
Assunto: [shell-script] SED: Inserir quebra de página após XX caracteres
Para: address@hidden
Data: Quarta-feira, 2 de Junho de 2010, 10:35







 



  


    
      
      
      Salve ilustres, bom dia.



Estou tentando escrever um script usando o SED que identifique o conteúdo de um 
campo dentro de um arquivo XML (tudo o que estiver entre as tags 
<SignatureValue> e </SignatureValue>) e substitua este conteúdo por ele mesmo, 
mas com uma quebra de linha a cada 76 caracteres.



Pensei que daria para fazer com um loop, mas não sei como contar os caracteres 
para fazer a quebra a cada 76. Estou esquentando os miolos ha um par de horas e 
não consegui sequer um esboço do código.



Alguém pode sugerir algo?



<contexto>

Um bug em nosso sistema de emissão de NFe fez com que uma enormidade de 
arquivos XML fossem gerados com erro.



A assinatura do XML da NFe tem 172 caracteres, demarcados com a tag 
<SignatureValue></SignatureValue>.



O problema é que os caracteres da assinatura devem ter uma quebra de linha a 
cada 76 caracteres (ou seja, no lugar dos 77º e 153º caracteres).



De uns dias para cá, embora envie o arquivo no formato correto para os 
webservices da receita, ao receber de volta com o protocolo de autorização, tal 
sistema tem gravado este arquivo em uma única linha, removendo todas as quebras.



Com isso, meus clientes não consegue validar meus XMLs, pois o validador da 
receita busca esta assinatura no banco de dados deles e compara com a do 
arquivo, que é diferente justamente por causa da falta das quebras.

</contexto>





    
     

    
    


 



  






      

[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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