Sed只有特定的地方

时间:2017-07-05 14:49:30

标签: sed

例如;

我希望仅在<img>代码中替换 / test src路径。

但不应触及<p>test</p>

$ cat test.html
<img src="/test" width="18" alt="" /><br>
<p>test</p>

现在我可以执行类似的事情了。

sed -i '/test'|/hoge|g' test.html

然而,它改变了全球这个词。

2 个答案:

答案 0 :(得分:0)

sed '/<img/s|/test|/hoge|g' test.html适用于一行<img代码

Sed允许s///g替换为前缀为另一个/PATTERN/,以将替换限制为与PATTERN匹配的行。

但你真的应该使用xml解析器来保证安全。

答案 1 :(得分:0)

sed的另一种方法:

sed -i 's|\(<img *src="/\)test|\1hoge|'  test.html
使用替换字符串中的<img *src="/捕获

\1并进行反向引用。 以下字符串(test)将替换为hoge