如何将纯文本转换为带有可点击链接的 html

如何将纯文本转换为带有可点击链接的 html

如何将包含一堆 url 的纯文本文件转换为带有可点击链接的 html?最好在命令行上。

每隔一段时间我就会得到一个包含一堆网址的纯文本文件。通常每行一个 url。也许中间有一些空行。有时带有一些文字。有时甚至将文本和网址放在一行中。

$ cat foo.txt 
some links
https://stackoverflow.com/
https://superuser.com/
https://askubuntu.com/

best? https://unix.stackexchange.com/

这些文件是由人类生成的,因此我不能仅配置源来输出格式良好的文件。

如果只有几个网址,那么我可以手动复制它们。或者cat在 gnome 终端(这使得网址可点击)中并点击链接。我什至可以cat foo.txt | xargs firefox

但如果它们与文本混合或链接太多,那么所有这些都不再可行。

我不想开始尝试使用正则表达式解析网址:sed 将文本 url 替换为 html url

答案1

潘多克来救援

pandoc -f markdown+autolink_bare_uris+hard_line_breaks foo.txt > foo.html

autolink_bare_uris即使未将 Markdown 格式设置为链接,也使链接可点击

hard_line_breaks将每个换行符视为换行符

例子:

$ cat foo.txt 
some links
https://stackoverflow.com/
https://superuser.com/
https://askubuntu.com/

best? https://unix.stackexchange.com/

$ pandoc -f markdown+autolink_bare_uris+hard_line_breaks foo.txt
<p>some links<br />
<a href="https://stackoverflow.com/" class="uri">https://stackoverflow.com/</a><br />
<a href="https://superuser.com/" class="uri">https://superuser.com/</a><br />
<a href="https://askubuntu.com/" class="uri">https://askubuntu.com/</a></p>
<p>best? <a href="https://unix.stackexchange.com/" class="uri">https://unix.stackexchange.com/</a></p>

pandoc 的替代方案:md4c

不像pandoc那么“重”。它是 qt5-base(在 archlinux 中)的依赖项,因此您的系统上可能已经安装了它。

$ md2html --fpermissive-url-autolinks foo.txt 
<p>some links
<a href="https://stackoverflow.com/">https://stackoverflow.com/</a>
<a href="https://superuser.com/">https://superuser.com/</a>
<a href="https://askubuntu.com/">https://askubuntu.com/</a></p>
<p>best? <a href="https://unix.stackexchange.com/">https://unix.stackexchange.com/</a></p>

似乎没有选择将每个换行符视为换行符。这意味着它们之间没有空行的网址将聚集在一个段落中。

答案2

如果您编辑foo.txt上面的示例羽毛垫编辑器,它们将显示为可点击的链接。

相关内容