「unexpand(1)」-

将空格转化为制表符

命令语法格式

unexpand [OPTION]… [FILE]…

命令描述

命令unexpand将给定的文件FILE的内容写入标准输出,并将每行开始处的空白转换为所需的多个制表符。在默认的POSIX语言环境中,“空白”指的是空格或制表符;其他语言环境中可能会指定其他空白字符。

如果未指定文件FILE,或者FILE为’-‘,则从标准输入中读取数据。

默认情况下,命令unexpand仅转换在每行初始的空白(位于所有非空白字符之前的空白)。在输出中,它会保留退格字符(BS);他们减少了制表符(TAB)计算的列数。默认情况下,每8个空白列才会被设置为一个制表符。

命令支持的选项及含义

用于长选项的必须参数也必须提供给对应的短选项。

–help
显示帮助信息并退出。

–version
显示版本信息并退出。

-a, –all
还要在制表符停止之前,转换两个或多个空白的所有序列,即使它们出现在一行中的非空白字符之后。

–first-only
只转换每行初时的空白,即位于所有非空白字符之前的空白。覆盖-a选项。

-t tab1[,tab2]…, –tabs=tab1[,tab2]…
该选项隐含了-a选项的功能。除此之外:

如果只给出一个制表位,形如-t tab1,则将在每tab1列的空白设置为一个制表符,而不是默认的每8列。

如果给出多个制表位,形如-t 1,3,4,则将制表符分别设置在tab1,tab2,…指定的位置上(从0开始编号),在制表位之外没有改变的地方留下空白。多个制表位之间既可以用空格分隔,也可以逗号分隔。

作为一个GNU扩展,指定的最后一个制表位可以用’/’作为前缀,指示了用于其余位置的制表符的大小。例如,–tabs=2,4,/8,表示将在第2和第4位设置制表位,此后是8的倍数位置设置一个制表符。

另外,最后一个制表位可以用“+”作为前缀,以指示用于剩余位置的制表符的大小,与最后明确指定的制表位间的偏移量。例如,要忽略差异输出中出现的1个字符的装订线,可以使用–tabs=1,+8来指定1个字符的偏移量,这将在位置1,9,17…处设置制表符。

为了兼容性,GNU的unexpand支持过时的选项语法,-tab1[,tab2]…,其中制表位必须用逗号分隔。与-t不同,这个过时的选项语法并不隐含了-a选项。新脚本应该使用–first-only -t tab1[,tab2]…来代替这种旧的用法。

相关手册

expand(1)

查看在线手册:http://www.gnu.org/software/coreutils/unexpand

查看info手册:info ‘(coreutils) unexpand invocation’

参考文献

更新日志

  • 06/27/2018 创建文章
  • 07/15/2018 更新文章内容,就该-t选项的说明