Я использую следующую команду 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. Одно из них — разрешение нескольких команд на одной строке между {
и }
. Использование любого из расширений не гарантирует работу в других реализациях sed.
Busybox sed— это минимальная версия, поэтому для ее работы следует придерживаться стандартного синтаксиса:
busybox sed -n '/<tag>/ {
:n
/<\/tag>/!{
N
bn
}
y/\n/ /
p
}' <file