![如何将纯文本转换为带有可点击链接的 html](https://linux22.com/image/172464/%E5%A6%82%E4%BD%95%E5%B0%86%E7%BA%AF%E6%96%87%E6%9C%AC%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%B8%A6%E6%9C%89%E5%8F%AF%E7%82%B9%E5%87%BB%E9%93%BE%E6%8E%A5%E7%9A%84%20html.png)
如何将包含一堆 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
上面的示例羽毛垫编辑器,它们将显示为可点击的链接。