为什么这个 unexpand 似乎不起作用?

Mic*_*ant 1 text-processing columns

我的理解是unexpand可以用制表符替换多个空格。

我有一个x.x包含内容的文件

1  2   3  4 5
Run Code Online (Sandbox Code Playgroud)

我输入expand x.x但输出仍然是

1  2   3  4 5
Run Code Online (Sandbox Code Playgroud)

并且现在似乎没有标签。我错过了什么?

同样expand x.x -t20似乎仍然给出相同的输出

Sté*_*las 5

expand 展开制表符(基于您指定制表位的距离),并unexpand取消展开制表符。

$ printf '1\t2\t3\n' | expand -t12 | tr ' ' _
1___________2___________3
Run Code Online (Sandbox Code Playgroud)

(每 12 列使用制表位展开制表符)。

$ echo 1___________2___________3 | tr _ ' ' | unexpand -t4 | tr '\t' t
1ttt2ttt3
Run Code Online (Sandbox Code Playgroud)

(每 4 列使用制表位取消扩展)。

如果您的输入没有TAB字符,expand则不会对其执行任何操作。

        0         1
        0123456789012
$ echo '1  2   3  4 5' | unexpand -t 3,7,10,12 | tr '\t' t
1t2t3t4 5
Run Code Online (Sandbox Code Playgroud)

(它不会用制表符替换单个空格)