【问题标题】:How to insert a line to html file after match using SED如何在使用 SED 匹配后向 html 文件插入一行
【发布时间】:2016-09-29 19:06:37
【问题描述】:

如何在匹配后向 html 文件插入一行,例如我正在尝试插入这一行:

<a href="www.google.com">HERE</a>

在这样的比赛之后:

<p id="insert_here">

经过一番研究,我发现 Sed 可以用于这样的事情,这是我的尝试:

sed '/\<p id="insert_here">/<a href="www.google.com">HERE </a>' prac.html

【问题讨论】:

  • 使用这个:sed '/&lt;p id="insert_here"&gt;/i \&lt;a href="www.google.com"&gt;HERE &lt;/a&gt;' prac.html
  • 我收到此错误 "/

    /i ...": 在 i 命令末尾的 \ 之后有多余的字符

  • ^^ 从 sat 的评论中删除 \ 之前的 &lt;a
  • 仍然不工作,它说命令我期望 \ 后跟文本。

标签: html bash sed terminal


【解决方案1】:

要添加一行,请使用a(用于追加)命令:

sed -i '/<a href="www.google.com">HERE<\/a>/a\
<p id="insert_here">
' prac.html

使用 GNU sed,您可以省略命令后的新行:

sed -i '/<a href="www.google.com">HERE<\/a>/a <p id="insert_here">' prac.html

【讨论】:

【解决方案2】:

正确的命令应该是这样的 sed -e 's#&lt;p id="insert_here"&gt;#&lt;a href="www.google.com"&gt;HERE &lt;/a&gt;#g' prac.html

/g 用于全局替换 更多详情请阅读sed by example

您也可以使用 -i 标志进行就地替换 示例:

sed -i '' 's#<p id="insert_here">#<a href="www.google.com">HERE </a>#g' prac.html

【讨论】:

  • “s”不是替代品吗?我只是想添加一个新行,但仍然出现错误:sed:1:“s/

    / ...”:替代命令中的错误标志:'a'

  • 你测试过这个吗? &lt;/a&gt; 中未转义的斜杠会混淆 sed。
  • @rohitverma 它有点工作,但它正在替换它而不是添加新行。
  • @BenjaminW。那么你认为我应该怎么做才能不混淆 sed?我尝试添加一个反斜杠它不起作用。
猜你喜欢
  • 1970-01-01
  • 2013-03-11
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多