sed,收到错误:sed:未终止{

sed,收到错误:sed:未终止{

我正在使用下面的 sed 命令

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

输出:

<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>

这个命令在 bash 中工作正常。但是,它在 /bin/sh(BusyBox sed version:v1.19.0) shell 中给出以下错误

sed: unterminated {

我该如何修复这个错误,出了什么问题?

答案1

GNU sed有许多远离的延伸标准sed。其中之一是允许在{和之间的同一行上使用多个命令}。不保证使用任何扩展可以在其他 sed 实现中工作。

繁忙的sed是一个最小版本,因此您应该坚持使用标准语法才能使其工作:

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

相关内容