用 sed 或 awk 可快速将纯文本转基础 html:sed 命令每行加 标签;awk 更适合空行分段;中文建议用 gawk;带简单格式用 pandoc 并注意编码与模板选项;python 必用 html.escape() 防 xss;避免 document.write 等前端方案。

用 sed 或 awk 快速转纯文本为基础 HTML
纯文本文档(比如 README.txt、日志片段)没有结构标记,直接套 <p></p> 和换行是最轻量的转化方式。别想用 Markdown 解析器——那属于过度设计。
常见错误是手动加标签,或者写 Python 脚本处理 3 行文本,反而卡在环境依赖上。
- Linux/macOS 终端里,
sed 's/^/<p>/; s/$//' input.txt > output.html</p>就能给每行包一层段落标签 - 如果原文有空行分段,用
awk '/^$/ {print "<p>"; next} {print}' input.txt | sed '1s/^/</p> <p>/; $s/$//' > output.html</p> -
awk比sed更适合识别空行逻辑,但注意 macOS 自带的awk对 Unicode 支持弱,中文可能乱码,优先用gawk
用 pandoc 处理带简单格式的文本(标题/列表/代码块)
如果你的文本里有 # 标题、- 列表项 或缩进四格的代码段,pandoc 是唯一靠谱的通用方案。它不挑输入格式,但默认输出会带完整 HTML 模板,容易踩坑。
立即学习“前端免费学习笔记(深入)”;
- 只想要 body 内容?必须加
--standalone=false --template=(空模板),否则生成带的全页 - 输入是纯文本但想当 Markdown 解析:用
pandoc -f markdown -t html input.txt -o output.html,不能省略-f markdown,否则它按纯文本处理,忽略所有 # 和 - - 中文 Windows 用户常遇到编码错误:
pandoc默认读 UTF-8,而记事本保存的 ANSI 文本会崩,先用iconv -f GBK -t UTF-8 input.txt | pandoc -f markdown -t html > output.html
Python 用 html.escape() 防 XSS,不是用 str.replace()
手写脚本时最容易犯的错:把 直接替换成 <code><,结果 & 又被二次转义成 &,页面显示一堆 "。这是典型未区分原始内容与 HTML 实体的后果。
- 永远用标准库
html.escape()处理用户文本:from html import escape; escaped = escape(line) - 别自己写正则替换
/<code>>/&,html.escape()已处理引号和 Unicode 边界情况 - 如果后续还要插入到
<pre class="brush:php;toolbar:false;"></pre>里,记得保留换行符:用escaped.replace('\n', '<br>'),而不是让浏览器自动折行
为什么不用浏览器 DOM API(document.write)在线转换
有人试过把文本扔进 iframe 用 document.write 渲染,看似简单,实际掉进兼容性和安全限制的坑里。
- 现代浏览器对
document.write在 defer/script async 场景下直接禁用,控制台报DOMException: document.write() is not available - 跨域或 file:// 协议下,iframe 会触发 CORS 或读取限制,连本地测试都失败
- 即便跑通,也无法控制输出是否带样式、meta、doctype——你拿到的是一整页渲染结果,不是可嵌入的 HTML 片段
真正要嵌入网页的,老实用后端或构建时处理;临时预览,就开个本地 python -m http.server 配合静态 HTML 模板更稳。









