sed Solaris 5.10

发布于 2024-12-17 08:01:17 字数 389 浏览 1 评论 0 原文

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

我想将

$FORMTOP("2")$ 的所有外观替换为 $FORMTOP("3")$

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

;换行符、制表符

删除 的出现

Hi I am trying to write a script to parse some html files to make a job a bit easier, but I'm having no luck, I've tried reading other threads and manuals to no avail. I seem to get stuck with circular brackets.

I want to replace all appearances of:

$FORMTOP("2")$ with $FORMTOP("3")$

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

</b> with </strong>

<tr><td with <tr> newline, tab <td

delete occurrences of <td></td>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狼性发作 2024-12-24 08:01:17

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

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

<tr>
        <td 

In sed you will have to put a new line (put a "\" and hit enter) and tab spaces (press spacebar 8 times) manually in the replacement section.

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

<tr>
        <td 
心清如水 2024-12-24 08:01:17

我不能肯定地说这将在 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 解释为环境变量的“$”。如果将测试数据放入文件中,请务必删除“$”前面的“\”。

编辑 另外,在 sed 中看起来缩进的内容实际上是用空格缩进的,除了最后一个 之前的字符。

另外,正如您所写的“我尝试阅读其他线程”,您确实找到了有关 使用 sed 修复 XML,对吧?

我希望这有帮助。

I can't say for certain that this will work on Solaris, as I don't have it available anymore, but I'm using Sun-Solaris std sed commands with nothing fancy, I think this should work.

{
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

For this testing harness, using { cat <<-EOS ... EOS }, I had to escape the '$' that where being interpreted as env vars by the shell. If you put the test data in a file, be sure to remove the '\'s in front of the '$'s.

EDIT Also, stuff that looks indented in sed, is indented with spaces except for the char just before your final <td.

Also, as you wrote 'I've tried reading other threads',you did find the S.O. number one post concerning fixing XML with sed, right?

I hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文