Usando outros delimitadores em sed

Publicado por Xerxes em 24/03/2017

[ Hits: 4.118 ]

 


Usando outros delimitadores em sed



Dica testada no Debian Jessie 8.7.1.

Uma vez precisei importar edições de uma revista em OJS para outro OJS. Os arquivos das edições são exportados e importados em XML.

A exportação ocorreu sem problemas. Mas na importação me deparei com um erro assim:

DB Error: Column 'email' cannot be null
Após verificar o arquivo não encontrei nenhum campo <email></email> vazio. Mas então, depois, percebi que alguns autores de artigos estavam sem o campo do e-mail, sem as tags mesmo. Eu corrigi manualmente inserindo as tags, mesmo deixando-as vazias e a importação ocorreu sem problemas.

Depois me deparei com o mesmo problemas em outras edições.

Para facilitar minha vida resolvi usar um comando para inserir as tags faltantes sempre que o erro acontecia.

O comando ficou assim:

sed 's#</country></author>#</country><email></email></author>#g' arquivo.xml arquivo-novo.xml

Eu sabia que esse comando (sed) existia, mas eu usava muito "\" para escapar as barras das tags, o que deixava tudo muito confuso. Então achei uma dica que dizia que era possível trocar os delimitadores por outra coisa, no caso o "#".

E funcionou. Eu não sabia, até então, que era possível usar outros delimitadores em sed.

Fica a dica!

Obs.: antes de descobrir como contornar esse erro no XML eu pedia para um colega de trabalho corrigir para mim. Obrigado Fábio!

Fonte: linux - search and replace html tags (with slashes) in sed - Stack Overflow

Outras dicas deste autor

Mintmenu no Funtoo

Aplicativos Flatpak no Dmenu

Termux: Transforme Seu Android em um Terminal Linux

PostgreSQL - "database server: mainError: could not exec" [Resolvido]

QEMU no Slackware

Leitura recomendada

Título "retrátil" da janela no i3

Recuperando GRUB do Ubuntu

Monitorando a entrada e saída de pacotes

Imprimindo com múltiplas páginas em uma mesma folha

rm - remover vários arquivos excetuando alguns

  

Comentários
[1] Comentário enviado por hellnux em 24/03/2017 - 15:14h

Já usei o arroba como delimitador x]



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts