sed, recebendo um erro: sed: unterminated {

1

Estou usando o comando abaixo do sed

sed -n '\|<tag>|{:n; \|</tag>|!{N;bn}; y|\n| |;p }' test.xml

OUTPUT:

<tag> <name>jolly</name> <class>2nd</class> <address>  </address> </tag>
<tag> <name>james</name> <class>3rd</class> <address></address> </tag>
<tag> <name>dolly</name> <class>4th</class> <address> <city>delhi</city> </address> </tag>

Este comando está funcionando bem no bash.Mas, está dando erro abaixo no shell / bin / sh (BusyBox sed version: v1.19.0)

sed: unterminated {

Como posso corrigir este erro, o que está errado?

    
por Sai 03.11.2015 / 09:52

1 resposta

1

O GNU sed tinha muitas extensões distantes de estandard sed . Um deles é permitir vários comandos na mesma linha entre { e } . Não é garantido que usar qualquer uma das extensões funcione em outras implementações de sed.

O Busybox sed é uma versão mínima, então você deve seguir a sintaxe padrão para fazê-lo funcionar:

busybox sed -n '/<tag>/ {
  :n
  /<\/tag>/!{
    N
    bn
  }
  y/\n/ /
  p
}' <file
    
por 03.11.2015 / 10:24