sed solaris 5.10

时间:2011-11-18 13:08:58

标签: regex unix sed solaris

您好我正在尝试编写一个脚本来解析一些html文件,以使工作更容易,但我没有运气,我尝试阅读其他线程和手册无济于事。我似乎陷入了圆括号。

我想要替换所有外观:

带有$FORMTOP("2")$

$FORMTOP("3")$ 带有$WHITE*("5")$

$WHITE*("10")$ 带有</b>

</strong> 带有<tr><td

<tr> newline, tab <td

删除<td></td>

的出现次数

2 个答案:

答案 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的头号帖子,对吧?

我希望这会有所帮助。