有时需要在Linux中的命令行上以列格式显示文件的内容。幸运的是,有一个Linux命令Column
,可让您以列格式显示文件的内容。也就是,可以将文本从行转为列显示,或者说做行列转换。今天,我们将研究Column命令的基础知识,以及如何以最有用的方式使用它来格式化内容。对于本文,我使用Ubuntu 18.04 LTS来描述该过程。
Column(列)命令的语法
column命令的常规语法为:
$ colunm [参数] [文件名]
在[参数]中,可以指定以下选项:
-s 指定分隔符。
-c 根据一行中允许的总字符来格式化输出。
-t 创建表,默认情况下,定界符默认是空格,或使用–s选项指定的字符
-x 默认情况下,行在列之前填充,但是使用此参数可以在填充行之前填充列
-n 默认情况下,多个定界符合并为一个定界符。您可以使用–n参数禁用此行为。
-e 默认情况下,空行将被忽略。您可以使用–e参数禁用此行为。
Column(列)命令用法
例如,我创建了一个测试文件名为“test”,其内容如下图所示。请注意,您可以用其他方式查看文件的内容,不一定要在终端中使用cat命令打开它。
通过按下启动终端Ctrl + Alt + T并输入:
$ cat [文件名]
我的测试文件如下所示:
要查看column命令的实际作用,请键入column后跟文件名:
$ column [文件名]
通过输入以上命令,您将看到该命令已将文件的内容转换为列。
这是对Column命令的最简单的解释。现在,我们将看到此命令的更多用法。
使用自定义定界符或分隔符
您可以在Column命令中使用自定义分隔符,该命令将告诉它何时应将内容拆分为新列。
我使用的测试文件包含下图所示的内容。它包含用逗号分隔的数据。
采用 –t参数以表格格式显示内容。默认情况下,它使用空格作为分隔符。
要基于特定的分隔符分隔内容,请使用–s参数,后跟特定的分隔符或定界符,如以下命令语法所示:
$ column -t [-s分隔符] [文件名]
使用-n参数添加多个定界符
默认情况下,column命令用单个分隔符合并多个相邻的相同分隔符。例如,我们有一个示例文件,其中包含具有多个相邻分隔符的内容,如下图所示。
Column命令将多个分隔符视为一个分隔符,并将显示以下输出
添加–n选项将禁用此行为。使用以下语法运行命令:
$ column [-n] [-t] [-s 分隔符] [文件名]
您会注意到前两列之间的空间,这意味着它没有将相邻的分隔符合并为一个分隔符。
使用-e参数添加空行
默认情况下,column命令将忽略空行。如果要在列中包含这些空行,请使用–e参数。
例如,我有以下示例文件,其中带有一些空行。
我已经使用了column命令,但是您可以看到column命令没有包含空行。
要允许column命令在输出中包含该空行,请使用以下语法中的命令:
$column [-e] [-t] [-s 分隔符] [文件名]
您会注意到,空行现在包含在column命令的输出中。
使用-x参数在行之前填充列
Column命令通过先填充行,然后填充列。这可能不适用于某些文件的行列转换。但是,您可以更改此行为,并且可以在填充行之前填充列。为了清楚理解,请参见以下示例。
在此示例中,我有一个名为“a.txt”的测试文件,其中包含1-100的数字,每行一个数字。我们希望数字转为从左到右,从上到下,按行业排列。
但是使用Column命令将显示如下输出。但是,这不符合我们要求的排列意义。
为此,我们将使用–x参数。键入column,后跟–x和文件名。
$ column [-x] [文件名]
现在,您将注意到此输出采用了适合我们上面的示例文件的格式。
使用-c参数更改显示宽度
您可以扩展命令输出的显示宽度。使用–c参数指定行的宽度。在此示例中,我有一个名为“xyz”的文件,其中包含一些内容,如下所示。
仅使用column命令将显示如下输出:
要更改显示的宽度,请键入column命令,然后键入–c参数。为了减小显示的宽度,我用以下语法输入了命令:
$ column [-c字符] [文件名]
为了增加显示器的宽度,我输入了如下图所示的命令:
现在您可以看到显示器的宽度增加了。
保存列式输出
要保存使用Column命令完成的格式化输出,可以在Terminal终端中使用以下命令。该命令的语法为:
$ column [参数] [文件名1] >文件名2
完。