sed 将文本 url 替换为 html url

sed 将文本 url 替换为 html url

我在一个文本文件中有一堆 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

如果要对正则表达式的各个部分进行分组,请使用或通过提供选项来\(\)使用扩展正则表达式语法。-Esed

在你的情况下,根本不需要,至于整个匹配,你可以&在替换中使用:

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'

相关内容