expand和unexpand命令示例
本教程通过实际示例说明了两个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