[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]