Usando outros delimitadores em sed

Publicado por Xerxes em 24/03/2017

[ Hits: 4.273 ]

 


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

Como desativar notificação de e-mail no Slackware e no Zenwalk

[Resolvido] Quadrados ao invés de caracteres no openSUSE

CentOS 6.x (minimal) sem rede após instalado [Resolvido]

Gravador de área de trabalho nativo do Gnome 3

Atalhos do Gnome 3 (gnome-shell)

Leitura recomendada

Visual Studio Code disponível como SNAP para suportar distros Linux

Atualizando Fedora 31 para 32 usando linha de comando

Listando arquivos que contém determinado padrão recursivamente dentro de um diretório

Como Criar e Aplicar um Patch de Correção de Código

Sed - Adicionar uma Linha em Branco no Final do Arquivo

  

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