expand和unexpand命令示例

时间:2020-03-21 11:47:50  来源:igfitidea点击:

本教程通过实际示例说明了两个Linux命令,即Expand和Unexpand。
对于那些想知道的人,使用Expand和Unexpand命令将文件中的TAB字符替换为SPACE字符,反之亦然。
在MS-DOS中还有一个名为“扩展”的命令,该命令用于扩展压缩文件。
但是Linux Expand命令只是将制表符转换为空格。
这两个命令是GNU coreutils的一部分,由David MacKenzie编写。

为了演示,我将在本教程中使用一个名为“ theitroad.txt”的文本文件。
下面给出的所有命令均已在Arch Linux中进行了测试。

expand命令示例

就像我已经提到的,Expand命令用空格字符替换文件中的TAB字符。

现在,让我们将制表符转换为theitroad.txt文件中的空格,然后使用以下命令将结果写入标准输出:

$expand theitroad.txt

如果我们不想在标准输出中显示结果,只需将其上传到另一个文件,如下所示。

$expand theitroad.txt>output.txt

我们还可以将制表符转换为空格,从标准输入中读取。
为此,只需运行“ expand”命令,而无需提及源文件名:

$expand

只需键入文本,然后按Enter键即可将制表符转换为空格。
按CTRL + C退出。

如果我们不想在非空格后转换制表符,请使用-i标志,如下所示。

$expand -i theitroad.txt

我们还可以将制表符隔开一定数量的字符,而不是8个(默认值):

$expand -t=5 theitroad.txt

我们甚至可以提及多个制表符位置,并以逗号分隔,如下所示。

$expand -t 5,10,15 theitroad.txt

或者,

$expand -t "5 10 15" theitroad.txt

有关更多详细信息,请参见手册页。

$man expand

unexpand命令示例

我们可能已经猜到了,“unexpand”命令将执行与“expand”命令相反的操作。
例如:它将空格字符转换为TAB字符。
让我向我们展示一些示例,以学习如何使用Unexpand命令。

要将文件中的空格(当然是空格)转换为制表符并将输出写入标准输出,请执行以下操作:

$unexpand theitroad.txt

如果要将输出写到文件中而不是仅将其显示到stdout,请使用以下命令:

$unexpand theitroad.txt>output.txt

从标准输出读取,将空格转换为制表符:

$unexpand

默认情况下,“展开”命令将仅转换初始空格。
如果要转换所有空格而不是仅转换初始空格,请使用-a标志:

$unexpand -a theitroad.txt

要仅转换空白的前导序列(请注意,它会覆盖-a):

$unexpand --first-only theitroad.txt

制表符之间必须隔开一定数量的字符,而不是8(启用-a):

$unexpand -t 5 theitroad.txt

同样,我们可以提及多个制表符位置,并以逗号分隔,如下所示。

$unexpand -t 5,10,15 theitroad.txt

或者,

$unexpand -t "5 10 15" theitroad.txt