sed, aparece un error:sed: sin terminar {

sed, aparece un error:sed: sin terminar {

Estoy usando el siguiente comando sed

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

PRODUCCIÓN:

<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 funciona bien en bash, pero muestra el siguiente error en el shell /bin/sh(BusyBox sed version:v1.19.0)

sed: unterminated {

¿Cómo puedo solucionar este error? ¿Qué ocurre?

Respuesta1

sed GNUtenía muchas extensiones lejos deasiento estándar. Uno de ellos es permitir múltiples comandos en la misma línea entre {y }. No se garantiza que el uso de cualquiera de las extensiones funcione en otras implementaciones de sed.

sed de caja ocupadaes una versión mínima, por lo que debes ceñirte a la sintaxis estándar para que funcione:

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

información relacionada