Estou usando o comando sed abaixo
sed -n '\|<tag>|{:n; \|</tag>|!{N;bn}; y|\n| |;p }' test.xml
SAÍDA:
<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á apresentando o erro abaixo no shell /bin/sh(BusyBox sed version:v1.19.0)
sed: unterminated {
Como posso corrigir esse erro, o que há de errado?
Responder1
GNU sedtinha muitas extensões longe desed padrão. Uma delas é permitir vários comandos na mesma linha entre {
e }
. Não é garantido que o uso de qualquer uma das extensões funcione em outras implementações do sed.
Caixa ocupada sedé uma versão mínima, então você deve seguir a sintaxe padrão para fazê-la funcionar:
busybox sed -n '/<tag>/ {
:n
/<\/tag>/!{
N
bn
}
y/\n/ /
p
}' <file