您好我正在尝试编写一个脚本来解析一些html文件,以使工作更容易,但我没有运气,我尝试阅读其他线程和手册无济于事。我似乎陷入了圆括号。
我想要替换所有外观:
带有$FORMTOP("2")$
的 $FORMTOP("3")$
带有$WHITE*("5")$
$WHITE*("10")$
带有</b>
</strong>
带有<tr><td
<tr> newline, tab <td
删除<td></td>
答案 0 :(得分:1)
在sed中,您必须在替换部分中手动添加一个新行(放置“\”并按Enter键)和制表符空格(按空格键8次)。
[jaypal@MBP-13~/temp] sed 's/<tr><td/<tr>\
<td/g' test123
<tr>
<td
<tr>
<td
答案 1 :(得分:0)
我不能肯定这会在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 }
,我不得不逃避被shell解释为env vars的'$'。如果您将测试数据放在一个文件中,请务必删除'$'前面的'\'。
编辑此外,在sed中缩进的内容使用空格缩进,除了最后<td
之前的字符。
另外,正如你写的'我试过读其他帖子',你确实找到了S.O.关于fixing XML with sed的头号帖子,对吧?
我希望这会有所帮助。