我正在修改 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<a href="\2.html">link</a>
其中\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