Linux 中的链接文本文件

Linkify text file in Linux

我已经解析了文本文件中包含 url 的所有行并附加了换行符,我想让 links 在新文件中可以点击。

如何使用标准 linux 工具(最好是 awk)仅在 url 周围附加 <a href> 标签? 它需要在 cron 中自动执行。

例如,

源文件chaturls.txt:

    12:30 <user> check this: https://link.to/stuff.jpg</br>
    13:47 <user4> https://another.link.lol eyyyy</br>

新文件中的所需输出,chatlinkified.html:

12:30 <user> check this: <a href='https://link.to/stuff.jpg'>https://link.to/stuff.jpg</a></br>
13:47 <user4> <a href='https://another.link.lol'>https://another.link.lol</a> eyyyy</br>

我试过 awk '{printf "<a href=\"%s\">%s</a><br>", [=14=],[=14=]}' chaturls.txt > chatlinkified.html,但这会使整行成为(无效的)可点击 link。

sed -E 's@(https?://[^[:space:]/$.?#].[^[:space:]<]*)@<a href=""></a>@g' chaturls.txt > chatlinkified.html

您可以使用 sed 并使用 </code> 返回匹配组。注意。在这里我使用 @ 而不是 / 来分隔(如在 s/../../g 中),你可以自由使用任何字符,这样可以节省一些转义。</p> <p>用于查找 URL 的正则表达式会对 https?:// 之后的第一个字符进行一些验证检查,然后继续匹配直到 space 或另一个标记的起始括号。 </p> <p>如果你想对 url 使用更简单的正则表达式,你可以这样做,在评论之一 <code>https?://[^ ]*) 中给出,其中不包括这个小验证。

您可以在此处找到更广泛的经过验证的 url 正则表达式:https://mathiasbynens.be/demo/url-regex(但您必须将 PHP 正则表达式转换为 sed 扩展正则表达式)