Не могу с уверенностью сказать, что это сработает на Solaris, поскольку у меня его больше нет, но я использую команды Sun-Solaris std sed, ничего особенного, думаю, это должно сработать.
{
cat <<-EOS
\$FORMTOP("2")$
\$WHITE*("5")$
</b>
<tr><td
EOS
} |sed '
s/\$FORMTOP("2")\$/\$FORMTOP("3")\$/g
s/\$WHITE\*("5")\$/\$WHITE\*("10")\$/g
s/<\/b>/\<\/strong>/g
/<tr><td/{
s/<td//
a\
<td
}
'
#output
$FORMTOP("3")$
$WHITE*("10")$
</strong>
<tr>
<td
Для этого тестового жгута, используя { cat <<-EOS ... EOS }
, я должен был избежать '$', который интерпретировался оболочкой как env vars. Если вы поместили тестовые данные в файл, обязательно удалите '\' перед '$'.
РЕДАКТИРОВАТЬ Кроме того, вещи, которые выглядят с отступом в sed, имеют отступы, за исключением символа, перед самым последним <td
.
Кроме того, когда вы написали «Я пытался читать другие темы», вы нашли S.O. пост номер один относительно исправления XML с помощью sed , верно?
Надеюсь, это поможет.