[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: |
Axcar, L. Miguel |
Subject: |
Re: [shell-script] SED: Inserir quebra de página após XX caracteres |
Date: |
Wed, 2 Jun 2010 12:18:43 -0300 |
Cristiano,
Usando só sed...
sed "s:[<SignatureValue>.*<\/SignatureValue>]:\n
$1:77;s:[<SignatureValue>.*<\/SignatureValue>]:\n $1:153;" arquivo
Com esse comando estou incluindo \n antes dos caracteres da posicao 77
e 153 que estão entre os blocos <SignatureValue> e </SignatureValue>.
Pra fazer direto uma alternativa copie esses XMLs pra um diretório
DIR, depois rodar:
for arquivo in $(ls DIR); do sed -i
"s:[<SignatureValue>.*<\/SignatureValue>]:\n
$1:77;s:[<SignatureValue>.*<\/SignatureValue>]:\n $1:153;" $arquivo;
done;
trocando DIR pela pasta que estão os XMLs
Importante: faça backup pois este "sed -i" está alterando no próprio arquivo.
Se não resolver poste aí de novo.
Abraço,
--
Luiz "Miguel" Axcar
address@hidden
Estudante de computação
Bauru, São Paulo, Brasil
"O próximo grande salto evolutivo da humanidade será a descoberta
de que cooperar é melhor que competir" (Pietro Ubaldi)
=====BEGIN FRACTAL-COMPRESSED SIGNATURE=====
!PGP0XA4E77CCB/KVC=1FCBE41048A009550F68867928EB8DDF
=====END FRACTAL-COMPRESSED SIGNATURE=====
A versão 2.6 do fractal-descompressor (em breve!) vai transformar isso
num MPEG de 72 minutos!
2010/6/2 Cristiano <address@hidden>
>
> 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>