尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linux命令:unexpand

Linux命令:unexpand unexpand 命令基本介绍unexpand命令用于将文件中的空格转换为制表符Tab是expand命令的逆操作。默认情况下unexpand仅转换行首的连续空格为制表符使用-a选项可转换所有位置的空格序列。常用于在保留缩进结构的同时减小文件体积或将用空格格式化的代码还原为 Tab 缩进格式。资料合集https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a语法unexpand [选项] [文件...]若未指定文件或文件为-则从标准输入读取。常用选项-a, --all转换所有空格序列不仅是行首这是与默认行为最关键的区别--first-only仅转换行首的空格序列默认行为当与-t一起使用时显式指定-t, --tabsN设置制表符宽度为每 N 个字符一个制表位隐含-a即转换全部空格-t, --tabsLIST使用逗号分隔的列表指定自定义制表位位置--help显示帮助信息并退出--version显示版本信息并退出使用示例1. 转换行首空格为制表符默认行为# 文件内容用 . 代表空格便于观察# ....printf(hello); - 4 个空格缩进# ........printf(world); - 8 个空格缩进unexpandfile.txt输出中行首的空格会被尽可能替换为制表符。2. 转换所有位置的空格序列# 文件内容name age city用空格对齐的列unexpand-adata.txt将文件中所有连续的空格包括行中对齐用的空格转换为制表符。3. 指定制表符宽度# 假设制表符宽度为 4unexpand-t4file.txt按每 4 个字符一个制表位转换空格。注意-t会隐含启用-a行为。4. 使用自定义制表位列表# 制表位位于第 8、16、24、36 列unexpand-t8,16,24,36 file.txt5. 从标准输入读取并转换echo indented text|unexpand将管道输入中的行首空格转为制表符。6. 还原 expand 的输出expand-t4file.txtexpanded.txtunexpand-t4expanded.txtoriginal.txtexpand与unexpand配合可实现 Tab↔空格 的相互转换。7. 配合 cat -A 查看转换效果unexpand-afile.txt|cat-A# ^I 表示制表符便于验证转换结果8. 批量转换文件forfin*.c;dounexpand-t4--first-only$f$f.tmpmv$f.tmp$fdone将所有 C 源文件的行首空格转换为 4 宽度制表符。注意事项默认仅转换行首不加-a时unexpand只处理每行开头的空白序列行中间的空格保持不变。-t隐含-a使用-t N时会自动启用全部转换行为若希望仅转换行首需显式加--first-onlyunexpand-t4--first-only file.txt空格数必须足够只有当空格数达到制表位边界时才会被替换为 Tab剩余不足的空格保留。混合空白处理行首若混合 Tab 和空格unexpand会尝试合并处理结果可能不直观。非破坏性不会修改原文件需通过重定向保存结果。相关命令expand将制表符转换为空格unexpand的逆操作tabs设置终端的制表符显示位置column按列对齐文本pr分页并格式化文本文件cut/paste按列处理文本与 expand 的对比特性expandunexpand转换方向Tab → 空格空格 → Tab默认处理范围所有 Tab仅行首空格需-a才处理全部否默认全部是默认仅行首常用场景让代码在不同环境正确显示还原 Tab 缩进、减小体积配合-t控制输出空格宽度控制制表位位置实用技巧在 Vim 中实现类似功能:set expandtab :set tabstop4 :retab将 Tab 转为空格expand反之:set noexpandtab | :retab!可将空格转为 Tab。检查文件使用 Tab 还是空格cat-Tfile.txt# Tab 显示为 ^Igrep-P\tfile.txt总结unexpand命令是将空格还原为制表符的实用工具特别适用于统一代码缩进风格、压缩文本体积等场景。掌握其与expand的配合使用能灵活处理各种 Tab/空格 转换需求。使用时需注意默认仅处理行首空格这一关键特性通过-a或-t选项可调整转换范围。
返回列表