我在一个文本文件中有一堆 URL。由于 Firefox 似乎无法直接加载这些 URL,因此我必须将它们转换为 HTML。
尝试使用sed
不起作用:
sed -e 's/^(.*)$/<a href="\1">\1<\/a><br>/g' myfile.txt
返回错误消息(翻译过来,在英语系统上看起来可能不完全如此):
sed: -e expression n°1, char 33: invalid reference \1 in right side of the command `s'
我只是想知道为什么?
网址就像这样:
https://unix.stackexchange.com/questions/378496/sed-to-replace-text-url-to-html-url
有些可能包含这些字符: % & / \ _ - = :
看来我在行尾、真正的换行符之前有一个“换行符”,因此包含在 .* 语句中。应该是因为该文件是在Windows环境下创建的。
答案1
如果要对正则表达式的各个部分进行分组,请使用或通过提供选项来\(\)
使用扩展正则表达式语法。-E
sed
在你的情况下,根本不需要,至于整个匹配,你可以&
在替换中使用:
sed 's/.*/<a href="&"><\/a><br>/' myfile.txt
请注意,您也可以删除^
和 ,$
因为贪婪*
会使匹配覆盖整行。
答案2
/
您在 sed 表达式中使用作为分隔符,使用 捕获文本/
,因此失败。
尝试一下's@^(.*)$@<a href="\1">\1<\/a><br>@g'
,假设没有要转换的 mailto 链接;-)
你也可以使用's!^(.*)$!<a href="\1">\1<\/a><br>!g'