
对于高级程序员而言命令行才是最酷的存在除非万不得已才会考虑使用GUI或IDE。本文汇总几款命令行下文档处理工具。Pandoc官网使用Haskell语言编写、开源GitHub40.6K Star3.7K Fork基于命令行的通用文档转换器。支持几十种文件格式的转换各种调整细节的选项也不计其数除基础的文档转换功能外还能通过Lua、Python等脚本语言实现高度自定义的文档转换成为其他很多现代文档工具的依赖如R Markdown、Quarto。官方PDF使用手册多达172页更新也很及时和频繁。实战支持多种安装方式# Windowschocoinstallpandoc# Macbrewinstallpandoc# Linuxsudoapt-getinstallpandoc不擅长命令行的可从GitHub Release页面下载安装包以Windows平台为例推荐下载zip包免安装版解压缩即可用加入系统环境变量PATH即可检查pandoc --version是否可用。命令行使用pandoc-fmarkdown input.txt-thtml-ooutput.html解读-f等价于--from、-r、--read用于指定输入文件的格式-t等价于--to、-w、--write用于指定输出文件格式-o等价于--output用于指定输出文件名。输入或输出的文件格式不是必须的可根据文件扩展名推测出文件格式如果输入文件没有扩展名默认是Markdown如果输出文件没有扩展名默认是HTML。如果没有指定输入文件Pandoc会从stdin读入如果没有指定输出文件则输出为stdout也就是直接显示在终端中可和其他Linux命令结合使用管道符。默认设置行宽为72--wrappreserve表示不换行保持原样。其他命令行# CSV转换成markdownpandoc-fcsv tips.csv-otips.md pandoc arma_acf.png-oaa.pdf pandoc arma_acf.png --pdf-enginexelatex-oaa.pdf遇到的问题CSV转换到markdown没有分割线|。转换PDF失败参考LaTeX安装与配置下载得到basic-miktex-24.1-x64.exe双击安装自动追加D:\Program\MiKTeX\miktex\bin\x64\到PATH系统变量。重试弹窗如下点击更改安装好多个宏包后还是出错重试pandoc arma_acf.png --pdf-enginexelatex -o aa.pdf也是安装各种宏包最后还是失败。换个md文件pandoc LangChain.md --pdf-enginexelatex -o aa.pdfPDF是生成成功但忽略掉中文分析xelatex选择的默认字体不支持中文字符追添字体设置参数-V CJKmainfontSimSun并再次对文件进行编译。重试命令pandoc LangChain.md --pdf-enginexelatex -V CJKmainfontSimSun -o aa.pdf终于成功注意执行命令时PDF文件不能是打开模式否则出现上面pandoc.exe: aa.pdf: withBinaryFile: permission denied (Permission denied)报错。Pandoc’s Markdown标准Markdown有不少局限性导致Markdown方言层出不穷。主要包括以下扩展语法表格简单表格、多行表格、网格表、管道表格列表多种多样的有序列表和无序列表行块以|开头可用于诗歌等特殊文体的排版脚注包括常规脚注和行内脚注文献引用支持BibTeX等多种引文格式数学公式用$或$$包裹数学公式支持混合使用LaTeX和HTML语法CommonMark一套针对标准Markdown语法进行严格定义并与之高度兼容的规范。PanWriter官网开源GitHub1.2K Star59 Fork跨平台基于Pandoc的Markdown编辑器通过GUI的方式实现Pandoc部分文档转换功能。qsv官网开源GitHub3.3K Star94 Fork、基于Rust、跨平台、命令行下的高性能的表格数据CSV、Excel、TSV等处理工具提供数据查询、切片、索引、分析、过滤、转换、排序、验证、连接、格式化等功能。在线体验官方文档。一个为现代数据工作流打造的高效命令行数据处理工具尤其适合大型结构化的表格数据处理它完美地填补简单文本处理工具如grep、awk和重型编程语言如Python、R之间的空白。功能特性超高性能使用Rust和Polars编写能够充分利用现代CPU的并行处理能力、索引、缓存以及流式处理等优化方式对于大型文件GB甚至更大的处理速度通常远超传统脚本如pandas或其他命令行工具如awk、sed功能丰富超过50个数据处理命令包括apply、cat、count、datefmt、diff、edit、excel、explode、fetch、foreach、join、json、luau、pivotp、select、slice、sort、sqlp、to、transpose等简单易用采用逻辑清晰的子命令结构和详细的帮助文档。命令qsv count data.csv用于统计行数。qsv Pro版本提供图形化的操作界面适合非技术人员工作流管道可将多个命令或者操作系统命令组合使用构建复杂的数据处理流程。例如命令qsv stats data.csv | qsv table用于分析每列的统计信息数据类型、最大值、最小值、标准差等并且以整齐的表格形式进行展示实战从官网下载实际上还是去GitHub Release页面下载以Windows为例怎么选GNU和MSVC是Windows系统下两种不同的构建工具链编译环境产生的版本区别主要在于GNU版本对应-gnu.zip使用MinGW/GCC编译器依赖MSYS2/MinGW运行时库与Linux工具链更相似通常文件体积稍小兼容性较好尤其是旧系统MSVC版本对应-msvc.zip使用Microsoft Visual Studio C编译器依赖Microsoft Visual C运行时库与Windows原生开发环境集成更好性能可能略有优势特别是涉及SIMD时本文下载GNU版本解压缩得到添加到PATH环境变量然后在任何目录都能使用。10.0.0版本提供多达63个子命令限于篇幅并未完全列出来qsv--listInstalled commands(63): apply Apply series of transformations to acolumnbehead Drop header from CSVfilecatConcatenate by row orcolumncount Count records datefmt Format date/datetime strings dedup Remove redundant rows describegpt Infer extended metadata using a LLMdiffFind the difference between two CSVs edit Replace a cells value specified by row andcolumnenum Add a newcolumnenumerating CSV lines excel Exports an Excel sheet to a CSV当然也提供命令行安装方式# Windowsscoopinstallqsv# Macbrewinstallqsvsudoportinstallqsv# Linuxsudoaptinstallqsv命令行使用# 展示标题名qsv headers news.csv# 统计行数含标题qsv count news.csv# 输出qsv table iris.csv# 不展示标题qsv behead iris.csv# CSV转换成JSONLqsv tojsonl iris.csv# 文件对比qsvdiffiris.csv iris-test.csv# 检查是否已排序qsv sortcheck iris.csv# 排序后输出qsvsortiris.csv# 倒序输出先输出最后一行最后输出第二行qsv reverse tips.csv# SQL查询from后的表名需和文件名一致qsv sqlp tips.csvselect * from tips order by total_bill desc# 以$$包含字段值qsv sqlp tips.csvselect * from tips where sex $$Male$$遇到的问题对于.xlsx格式的支持。对JSONL不熟悉的请参考JSON衍生。doxx开源GitHub3.3K Star75 Fork基于Rust语言开发可实现在终端里查看Word文档。官方文档。特性终端原生Word查看体验与传统Office软件相比非常轻量启动速度极快30MB文档仅需50毫秒打开能很好地保持文档原有格式如标题、段落、列表、表格。智能表格渲染技术自动识别表格中的数据类型智能对齐即使在黑色终端背景下也能保持清晰的可读性。表格边框是使用Unicode字符精心绘制自行缩放边框样式在不同尺寸终端窗口也能正常显示。高效的搜索和导航功能全文搜索按s键进入搜索模式支持正则表达式匹配搜索结果会实时高亮显示并提供上下文信息大纲视图按o键可以切换到文档大纲模式显示完整的标题层级结构快速定位到感兴趣的章节复制功能按c键可以将当前视图的内容复制到系统剪贴板在不同视图模式下会复制相应的内容格式。多格式导出能力具备强大的格式转换功能支持markdown、CSV、JSON、纯文本可与grep、awk等命令行配合使用doxx document.docx --export csv实战安装# 二进制安装curl-L https://github.com/bgreenwell/doxx/releases/latest/download/doxx-$(uname-s)-$(uname-m).tar.gz|tarxz sudomv doxx /usr/local/bin/# 源码安装gitclone https://github.com/bgreenwell/doxx.gitcddoxxcargoinstall--path.doxx--version参考Pandoc从入门到精通