「expand(1)」-

将TAB转化为空格

命令语法格式

expand [OPTION]… [FILE]…

命令描述

expand将每个在命令行中给出的文件FILE的内容写入标准输出,并将制表符转换为适当数量的空格。

如果没有给出FILE,或者FILE为’-‘,则从标准输入中读取。

默认情况下,expand将所有的制表符转换为空格。它在输出中保留退格字符;他们会减少了制表符计算的列数。

默认操作为-t 8(每8列设置一个制表符)。

命令支持的选项及含义

-i, –initial
仅将每行上的初始选制表符转换为空格。“初始选制表符”指的是位于所有非空格或非制表符字符之前的制表符。

-t tab1[,tab2]…, –tabs=tab1[,tab2]…
参数形式一:如果只给出一个tab1,形如-t 4,则将TAB设置为tabl个空格的长度,比如-t 4表示将一个TA设置为4个空格长度。如果没有指定-t选项,则等价于指定了-t 8(默认值将一个TAB替换成8个空格)。注意:是“将TAB设置为tabl个空格的长度”,而不是“将TAB替换成tabl个空格”,关于这一点,参阅下面的「关于制表符(TAB)」部分中的介绍。

参数形式二:如果指定指定了多个tab,形如-t 1,3,5,6,则将设置在tab1,tab2,…列的制表符(tab1从0开始编号),并将超出最后一个制表位以外的制表符替换为单个空格。

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

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

由以下几点需要注意:

  1. 为了兼容,GNU扩展还接受以前的语法“-t1[,t2]…”,但是新脚本应该使用”-t t1[,t2]…“来代替旧的用法。
  2. 制表位(tab1,tab2,…)可以用空格或者逗号分隔,如果使用空格分割,则制表位列表要使用引号,比如-t “1 2 3 4″。

–help
显示帮助手册并退出。

–version
显示版本号并退出。

退出状态

退出状态为零表示成功,非零值表示失败。

关于制表符(TAB)

有时候发现自己的语言能力还是有所欠缺。

真正明白制表符(TAB)是个什么东西之前,请先记住一句话:制表符是一个字符,只是在显示的时候会让人觉得“”。在显示时将它前面的内容通过空白扩展到一个指定的长度位置。一个制表符在显示时,没有固定的长度。

相关手册

unexpand(1)

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

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

参考文献

  • man 1 expand, version GNU coreutils 8.26

更新日志

  • 06/10/2018 创建文章