使用sed将URL转换为HTML链接?

时间:2010-03-22 02:37:37

标签: html command-line replace sed hyperlink

我想知道是否有可能(建议可能是更好的词)使用sed将URL转换为文档中的HTML超链接。因此,它会寻找以下内容:

http://something.com

并用

替换它们
<a href="http://something.com">http://something.com</a>

有什么想法?电子邮件地址也可以这样做吗?

5 个答案:

答案 0 :(得分:3)

这可能有用。

sed -i -e "s|http[:]//[^ ]*|<a href=\"\0\">\0</a>|g" yourfile.txt

这取决于后跟空格的网址(并非总是如此)。

您可以使用。

进行类似的电子邮件
sed -i -e "s|\w+@\w+\.\w+(\.\w+)?|<a href=\"mailto:\0\">\0</a>|g" yourfile.txt

那些可能会让你开始。我建议在进行内联更改之前不要使用-i选项来测试输出。

答案 1 :(得分:0)

你可以使用awk

awk '
{
 for(i=1;i<=NF;i++){
   if ($i ~ /http/){
      $i="<a href=\042"$i"\042>"$i"</a>"
   }
 }
} 1 ' file

输出

$ cat file
blah http://something.com test http://something.org

$ ./shell.sh
blah <a href="http://something.com">http://something.com</a> test <a href="http://something.org">http://something.org</a>

答案 2 :(得分:0)

sed -i.bakup 's|http.[^ \t]*|<a href="&">&</a>|'  htmlfile

答案 3 :(得分:0)

虽然你可以使用sed,但我通常只会使用sed,如果我需要一些只写的东西(也就是说,它只需要工作而不需要维护)。

我发现Python正则表达式库更易于访问(并且能够添加更强大的构造)。

import re
import sys

def href_repl(matcher):
    "replace the matched URL with a hyperlink"
    # here you could analyze the URL further and make exceptions, etc
    #  to how you did the substitution. For now, do a simple
    #  substitution.
    href = matcher.group(0)
    return '<a href="{href}">{href}</a>'.format(**vars())

text = open(sys.argv[1]).read()
url_pattern = re.compile(re.escape('http://') + '[^ ]*')
sys.stdout.write(url_pattern.sub(href_repl, text))

就个人而言,我发现更容易阅读和维护。

答案 4 :(得分:0)

  

该文件包含以下内容

     

http://something.com

     

以下代码将给出   正确的输出

sed -r 's/(.*)/\<a href="\1">\1\<\/a\>/' file