2017-07-05 19 views
0

たとえば、特定の場所のみSed

/test srcパスを<img>タグ内に置き換えたいと考えています。

ただし、<p>test</p>には触れないでください。

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

今のところ私は次のように実行できます。

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

ただし、単語はグローバルに変更されます。

+0

正規表現を使用しないでください。xmlstarletのようなhtmlパーサーを使用してください。 – Sundeep

答えて

0

sed '/<img/s|/test|/hoge|g' test.html一行のために働くだろう<imgタグ

SEDがs///g置換パターンに一致するラインに交換を制限する別の/PATTERN/を前置することを可能にします。

しかし、実際にはxmlパーサーを使用して安全である必要があります。 sedを持つ

+0

答えをありがとう。 xmlパーサーについていくつかリンクを張ることができますか? – Tosh

0

別のアプローチ:

sed -i 's|\(<img *src="/\)test|\1hoge|' test.html 

<img *src="/は、置換文字列に\1を使用してキャプチャしてbackreferencedされます。 以下の文字列(test)はhogeに置き換えられます。

関連する問題