Fórum Ubuntu Linux - PT

Área para Iniciantes => Dicas e Truques => Tópico iniciado por: danpos em 27 de Fevereiro de 2009, 23:54

Título: [DICA]: Edição em lote (batch editing) de arquivos *.odt com bash e sed.
Enviado por: danpos em 27 de Fevereiro de 2009, 23:54
@All

Motivação:

Após três dias de trabalho para gerar 78 relatórios no openoffice, eu verifiquei que havia um erro de concordância em um parágrafo. Putz! Editar 78 arquivos 1 a 1 não era alternativa. Pesquisando achei essa fonte (http://aurelio.net/vim/ooo-vi.html) e fiz as adaptações necessárias e então cheguei a solução em apenas uma linha no terminal (bash).

Código (bash - uma linha no terminal)

Código: [Selecionar]
for i in *.odt; do mkdir ./tmp; cd ./tmp; unzip -qq ../$i; sed -i 's/OQUEPROCURO/TROCA/' content.xml; zip -qq -r ../$i *; cd ..; rm -rf ./tmp; done
Neste código, "OQUEPROCURO" é o padrão procurado em cada relatório (no meu caso foi a palavra "encontrarem") e "TROCA" é o novo valor (no meu caso foi a palavra "encontrar"). O "sed -i" faz a modificação diretamente no arquivo (mais em "man sed" ou então baixando o ótimo livro - inacabado - do Aurélio Chagas).

Advertência:

Os arquivos *.odt não devem ter espaços em brancos no nome do arquivo (o unzip "chia"), talvez usando "" para cada $i faça a mágica mas não testei ...

Fica aí a dica ... ;)

Danpos.
Título: Re: [DICA]: Edição em lote (batch editing) de arquivos *.odt com bash e sed.
Enviado por: Kamei Hyoga em 28 de Fevereiro de 2009, 04:03
Eu tenho a impressão que ainda vou usar essa dica um dia hehehe Vlw por ela
Título: Re: [DICA]: Edição em lote (batch editing) de arquivos *.odt com bash e sed.
Enviado por: danpos em 28 de Fevereiro de 2009, 07:02
Eu tenho a impressão que ainda vou usar essa dica um dia hehehe Vlw por ela

Eu também... ;D ;D O legal que dá para estendê-la através do sed, i.e., ao invés de procurar apenas por um padrão, poder-se-ia procurar (e trocar) por dois ou mais padrões (no meu problema era apenas para trocar 'uma coisa pela outra' ;) ).

Danpos.