私は以下の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)シェルでは以下のエラーが発生します。
sed: unterminated {
このエラーを修正するにはどうすればいいですか、何が問題なのでしょうか?
答え1
GNU sed遠く離れた多くの拡張機能がありました標準sed{
それらの 1 つは、との間にある同じ行に複数のコマンドを許可することです}
。いずれかの拡張機能を使用しても、他の sed 実装で動作することは保証されません。
ビジーボックスsedは最小限のバージョンなので、動作させるには標準の構文に従う必要があります。
busybox sed -n '/<tag>/ {
:n
/<\/tag>/!{
N
bn
}
y/\n/ /
p
}' <file