【问题标题】:sed solaris 5.10sed 太阳能 5.10
【发布时间】:2012-01-01 05:53:18
【问题描述】:

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

我想替换所有外观:

$FORMTOP("2")$ 与 $FORMTOP("3")$

$WHITE*("5")$ 和 $WHITE*("10")$

</b> 与 </strong>

<tr><td 与 <tr> newline, tab <td

删除出现的<td></td>

【问题讨论】:

  • 您的问题不清楚。您想删除所有出现的 且中间没有任何内容吗?您是否要删除 .* 构造中的所有内容,但仅当它出现在示例中的 3 个特定行之后?问题中的 4 行代码块(7 行空白行)的目的是什么?
  • 是的,我想删除所有出现的 ,中间没有任何内容。我使用代码是因为我无法正确显示箭头。每次出现

标签: regex unix sed solaris


【解决方案1】:

我不能肯定这将在 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 &lt;&lt;-EOS ... EOS },我不得不转义被shell解释为环境变量的“$”。如果你把测试数据放在一个文件里,一定要把'$'前面的'\'去掉。

编辑另外,在 sed 中看起来缩进的东西,除了最后一个 &lt;td 之前的字符之外,都会缩进空格。

此外,当您写“我已尝试阅读其他线程”时,您确实找到了 S.O.关于fixing XML with sed 的帖子排名第一,对吧?

我希望这会有所帮助。

【讨论】:

  • 谢谢你,除了出现在后面的标签之外,一切都正常,它只是把
  • 是的,S.O.只显示空格,我在那里有一个制表符,如果您编辑代码并放置一个真正的制表符,它将起作用。你能接受答案吗? i.imgur.com/uqJeW.png 。祝你好运。
  • hm... 所以有问题的行应该看起来像 $sp$sp$tab
【解决方案2】:

在 sed 中,您必须在替换部分手动输入新行(输入“\”并回车)和制表符空格(按空格键 8 次)。

[jaypal@MBP-13~/temp] sed 's/<tr><td/<tr>\
        <td/g' test123
<tr>
        <td 

<tr>
        <td 

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签