sed(または役に立つもの)を使用して文字列を相対コンテンツに置き換えます。

sed(または役に立つもの)を使用して文字列を相対コンテンツに置き換えます。

通常、複数のファイルの文字列を置き換えるには、次のようにします。

sed -i 's/string1/string2/g' *

sedしかし、そのコマンド(または実際に動作するコマンド)を使用して文字列を関連項目に置き換えるにはどうすればよいですか?たとえば、

<td><a href="">a</a></td>
<td><a href="">abbr</a></td>
<td><a href="">address</a></td>
<td><a href="">area</a></td>
...

上記の例では、テキストを次の結果に置き換えるには何を使用できますか?

<td><a href="HTML-EX/html/a.html">a</a></td>
<td><a href="HTML-EX/html/abbr.html">abbr</a></td>
<td><a href="HTML-EX/html/address.html">address</a></td>
<td><a href="HTML-EX/html/area.html">area</a></td>
...

""二重引用符を関連する複数の文字の文字列に置き換えます。

答え1

次の例が役に立ちます。

sed 's#<a href="">\(.*\)</a>#<a href="HTML-EX/html/\1.html">\1</a>#'

まず、変数として表示されるタグ間のテキストをキャプチャします\1。その後、この変数は結果文字列に使用されます。

答え2

perl -i -pe 's|<a\hhref=\K "" (?=>([^<]+)</a>)|"HTML-EX/html/$1.html"|gx' *

LookbehindとLookahedを使用し、""プレビューキャプチャに基づいてこれらの二重引用符内に必要な文字列を挿入します。

関連情報