为什么 GNU 的 Expand 将制表符转换为少于 8 列?

为什么 GNU 的 Expand 将制表符转换为少于 8 列?

使用expand,我不明白它将制表符转换为多少个空格。从info expand

默认情况下,展开会将所有制表符转换为空格。它在输出中保留退格字符;它们减少选项卡计算的列数。默认操作相当于 -t 8(每 8 列设置制表符)。

但是:

$ cat file
aa  bb
$ cat -A file
aa^Ibb$
$ wc -m file
6 file
$ expand file > file2
$ cat -A file2
aa      bb$
$ wc -m file2
11 file2

这里它将制表符转换为 6 列。为什么?

答案1

来自OpenGroup 描述expand

扩张实用程序应将文件或标准输入写入标准输出,并将字符替换为填充到下一个制表位所需的<tab>一个或多个字符。<space>

-t 8放置选项卡停止相隔 8 个字符。由于输入aa在制表符之前的行开头还有两个其他字符 ( ),因此只需六个空格即可到达下一个制表位。

相关内容