有時需要在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
完。