Sedは周囲の数字の内容を置き換えます。

Sedは周囲の数字の内容を置き換えます。

HTML出力を修正しています。

<td nowrap align="right">4683</td>

ドキュメントでこのパターンのすべての項目を置き換えたいと思います。ここで、4683は所与の数の様々な長さであり得る。

したがって、この線は次のようになります。

<td nowrap align="right"><a href="4683.html">link</a></td>

これを探していると思います。

sed -i 's/align="right">/([0-9]*)/<\/td>/align="right"><a href="4683.html">link<\/a><\/td>/g' index.html

私は正規表現が引用、置換、または正しく構成されていない可能性があることを理解しています。

答え1

どうですか?

sed 's_^\([^>]\+>\)\([[:digit:]]\+\)_\1<a href="\2.html">link</a>_' file.txt
  • 入力にある形式ではなく、代替パターン形式を使用してい_ます。sed//

  • ^\([^>]\+>\)最も多くの(含まれている)文字を見つけて>グループに入れます。

  • \([[:digit:]]\+\)記載されている番号を見つけて、後で使用できるようにグループに入れます。

  • 置換パターンは、第1の一致グループが\1<a href="\2.html">link</a>どこにあり、第2の一致グループがどこにあるかである。\1\2

    例:

    $ sed 's_^\([^>]\+>\)\([[:digit:]]\+\)_\1<a href="\2.html">link</a>_'<<<'<td nowrap align="right">4683</td>'
    
    <td nowrap align="right"><a href="4683.html">link</a></td>
    

行の他の場所に数字がない場合は、単に次のものを使用できます。

sed 's_[[:digit:]]\+_<a href="&.html">link</a>_' file.txt

例:

$ sed 's_[[:digit:]]\+_<a href="&.html">link</a>_'<<<'<td nowrap align="right">4683</td>'

<td nowrap align="right"><a href="4683.html">link</a></td>

答え2

この試み、
sed -ri 's/([0-9]+)/<a href=\"&.html\">link<\/a>/g' index.html

関連情報