解决PanDoc将docx转markdown时多余LF换行问题
解决方案
方法一:Pandoc + Sed 组合处理
直接在Pandoc转换后用Sed清理多余格式,一步到位:
pandoc -s nis2.docx --wrap=none -t markdown | sed -e 's/^ //' -e 's/\t/ /g' -e ':a;N;$!ba;s/\n//g' | sed -e '$a\' > nis2.md
各部分作用:
sed -e 's/^ //':移除每行开头的4个空格缩进sed -e 's/\t/ /g':将(1)后的制表符替换为单个空格(如果不需要空格可改为s/\t//g)sed -e ':a;N;$!ba;s/\n//g':合并所有换行符,将内容转为单行sed -e '$a\':确保文件末尾仅保留一个LF换行
方法二:Pandoc转纯文本后处理
如果Markdown格式的中间转换带来多余识别,可先转成纯文本再整理:
pandoc -s nis2.docx --wrap=none -t plain | awk '{printf "%s", $0} END {print ""}' > nis2.md
-t plain:让Pandoc直接输出纯文本,避免生成Markdown列表缩进awk命令:将所有内容拼接成单行,最后添加一个LF换行
方法三:先预处理DOCX文件(可选)
如果后续还要重复处理,可先手动整理DOCX文件再转换:
- 打开nis2.docx,按
Ctrl+H打开替换窗口 - 查找内容输入
\t(制表符),替换为(单个空格,或直接留空) - 查找内容输入
^p(段落符),替换为空(仅清理多余的,保留末尾一个) - 保存后执行原Pandoc命令,最后用
awk '{printf "%s", $0} END {print ""}'合并单行
内容的提问来源于stack exchange,提问作者Richard Kranendonk
相关产品推荐
相关产品推荐

