
移动开发开发工具【免费下载链接】ZeroTermux项目地址https://gitcode.com/GitHub_Trending/ze/ZeroTermux点击查看免费下载col 是 Linux/UNIX 下经典的标准输入文本过滤器专门用于滤除文档中的反向换行RLF与半反向换行HRLF等控制字符把带终端控制序列的原始文本清洗成可读的纯文本。本文以 ZeroTermux 仓库内置命令手册 col.md 为主体结合仓库中该手册的加载与渲染实现系统讲解 col 的语法、选项、工作原理与典型实战用法帮助读者在 Termux/ZeroTermux 终端环境中快速掌握这一文本清洗工具。一、col 是什么标准输入文本过滤器col 是一个从标准输入读取文本、并把处理结果写到标准输出的过滤器。在许多 UNIX 说明文件尤其是 man 手册页内部都嵌有 RLF 控制字符。当开发者用 shell 的特殊字符和将说明文件的内容重定向输出成纯文本文件时这些控制字符并不会被自动清除而会原样落入文件形成肉眼可见的乱码。col 命令的作用正是有效滤除这些控制字符让文本恢复干净、可读的状态。这一说明来自仓库内置文档 col.md。在 ZeroTermux 中这类命令手册文件统一存放在app/src/main/assets/cmd/目录下每一条命令对应一个 Markdown 格式的.md文件如 col.md、ls.md、man.md构成了一个完整的、可离线查阅的命令速查手册集。1.1 RLF 与 HRLFcol 要处理的两类控制字符理解 col 之前需要先认识它针对的两类控制字符RLFReverse Line Feed反向换行控制序列为ESC 7即八进制\0337作用是把光标向上移动一行。在排版中它常用于实现上下标或行内叠字效果。HRLFHalf Reverse Line Feed半反向换行控制序列为ESC 8即八进制\0338作用是把光标向上移动半行需要终端支持半行定位能力。man 手册的排版引擎roff会借助这类字符实现两行内容的叠加显示例如将说明文字与上下标叠加。而一旦以纯文本方式导出这些转义序列就变成了干扰阅读的乱码来源——这正是 col 存在的原因。1.2 语法col 的命令行语法非常简洁col(选项)即col后直接跟可选选项数据从标准输入流入清洗结果从标准输出流出。ZeroTermux 内置的 col.md 所记录的语法即为此形式。二、选项详解四个核心参数仓库文档 col.md 完整记录了 col 的四个核心选项下表逐条整理并补充说明选项作用使用场景-b过滤掉所有的控制字符包括 RLF 和 HRLF最常用选项导出 man 手册为纯文本时优先使用-f滤掉 RLF 字符但允许将 HRLF 字符呈现出来需要保留半行定位排版效果时使用-x以多个空格字符来表示跳格字符Tab将 Tab 展开为空格避免输出中的制表符在不同终端宽度下错位-l 缓冲区列数指定内存缓冲区列数默认 128 列用户可自行指定大小处理超宽文本或大文件时按需扩大缓冲区对各选项的进一步说明-bfilter all control characters相当于对 RLF 与 HRLF 一视同仁、全部移除是清洗导出文本的万能钥匙。绝大多数man ... | col -b的管道用法都基于该选项。-ffilter RLF but allow HRLF只移除反向换行保留半反向换行。适合输出端终端本身支持半行定位、且希望保留叠加排版效果的场景普通纯文本导出一般不使用。-xconvert tabs to spaces将水平制表符转换为对应数量的空格使输出宽度确定、跨终端稳定。-l numcol 内部用内存缓冲区存放正在处理的逻辑行默认按 128 列预分配当一行内容超长或需要处理大量行时可通过该选项显式增大缓冲区避免截断。从 POSIX 工具族的通用语义看-b、-f、-x均为选项开关-l后需跟数字参数多个选项可组合使用例如col -b -x。三、典型应用场景与实战命令3.1 将 man 手册清洗成纯文本文件这是 col 最经典、使用频率最高的场景。man 手册页排版时会产生大量 RLF/HRLF 控制字符直接重定向会得到夹杂乱码的文本。正确做法是用管道交给 col 清洗# 查看 ls 的手册并清洗输出 man ls | col -b ls.txt # 直接查看清洗后的效果不落盘 man col | col -b | less把 col 自己的手册man col | col -b清洗后再阅读是最直观的验证方式——你能看到干净整齐的纯文本而非满屏转义乱码。3.2 清洗已有的带乱码文本文件如果已经通过或把说明文件导出成了含控制字符的纯文本文件可以将其重定向回 col 再次清洗# 清洗已存在的含控制字符文件 col -b raw.txt clean.txt # 原地查看清洗结果 col -b raw.txt | cat这与仓库文档 col.md 中把说明文件的内容输出成纯文本文件时控制字符会变成乱码col 命令则能有效滤除这些控制字符的描述完全对应。3.3 制表符展开与超宽文本处理# 将 Tab 统一展开为空格保证输出宽度确定 col -bx mixed.txt fixed.txt # 处理超长行文本时显式扩大缓冲区如 256 列 col -b -l 256 wide.txt clean_wide.txt-b与-x组合是导出文本最稳妥的搭配既滤除控制字符又消除 Tab 在不同终端宽度下的对齐差异。3.4 与相关命令配合col 常与以下命令协同完成文本处理管线colcrt专用于过滤半行换行与反向换行的另一款过滤器适合处理带下划线、上下标的文本colrm按列删除文本指定列范围负责删列而非滤字符pr、fold等格式化工具可与 col 串联对清洗后的文本做进一步分页、折行处理。四、仓库视角col.md 在 ZeroTermux 中的加载与渲染作为 ZeroTermux 内置命令手册体系的一员col.md 的实际消费逻辑位于仓库源码 CommandDialog.java 中。从源码结构看其工作链路如下用户在命令列表界面点击某条命令如col触发showCmdDetail(String cmd)回调通过AssetManager.open(String.format(cmd/%s, cmd))以流的方式打开app/src/main/assets/cmd/下的对应 Markdown 文件见 CommandDialog.java使用 CommonMark 的Parser将 Markdown 文本解析为节点树再用HtmlRenderer渲染为 HTML最终通过web_view.loadData(...)以text/html; charsetUTF-8的编码在应用内置 WebView 中展示给用户。因此用户在 ZeroTermux 里打开命令手册查看col条目时实际阅读的就是 col.md 这份文档经过解析渲染后的结果。整个命令手册集cmd/目录下数百个.md文件均为同一套机制驱动维护成本集中在 Markdown 源文件本身。五、使用注意事项标准输入/输出模型col 只处理标准输入与标准输出不直接接收文件名参数对文件操作必须借助输入输出重定向、或管道|。-f的适用范围仅当你确信输出终端支持半行定位、且需要保留叠加排版时再使用-f常规纯文本导出一律用-b否则 HRLF 序列仍会残留。缓冲区大小默认 128 列缓冲区面向常规文本若待处理文档包含超长行应通过-l增大缓冲区避免内容被截断。编码环境col 处理的是面向字符终端TTY的转义序列与现代多字节编码UTF-8文本配合时建议先确认输出端终端与文件的编码一致再执行清洗。六、小结col 是一个轻量却极其实用的文本过滤工具它通过滤除 RLF/HRLF 控制字符、可选展开制表符把 man 手册等含终端排版序列的原始文本清洗成可直接阅读、可长期存档的纯文本。在 ZeroTermux 中col.md 既是这条命令的速查手册也是内置命令手册体系由 CommandDialog.java 统一加载渲染的一个典型样例。掌握了col -b、col -x、col -l的组合用法你就能在终端中随手将任何带控制字符的文档洗成干净文本。赞分享移动开发开发工具【免费下载链接】ZeroTermux项目地址https://gitcode.com/GitHub_Trending/ze/ZeroTermux点击查看免费下载相关推荐Linux col 命令详解过滤 RLF/HRLF 控制字符还原干净的纯文本输出Linux col 命令详解过滤 RLF/HRLF 控制字符还原干净的纯文本输出 导读 col 是 Linux 下用于从标准输入读取文本、过滤其中反向换行文档教程如何将Uncle Bob整洁架构落地AndroidAndroid-CleanArchitecture完全入门指南如何将Uncle Bob整洁架构落地AndroidAndroid CleanArchitecture完全入门指南 Android CleanArchitect移动开发开发工具Tree-sitter 解析器使用指南从 C API 核心对象到增量解析实战Tree sitter 解析器使用指南从 C API 核心对象到增量解析实战 Tree sitter 是一个增量解析系统它能把源代码构建成具体语法树con移动开发开发工具上一篇南瓜书pumpkin-book第1章公式详解西瓜书没有免费午餐定理式(1.1)与式(1.2)的完整推导下一篇NV-Tesseract-AD 2.0调参实战如何通过curriculum_medium.yaml优化模型性能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考