2012-08-26 47 views
14

我試圖格式化bash中的條目列表,並且使用column命令。但是,-t選項默認使用任何空格作爲分隔符,這對我所擁有的數據(它包含空格和製表符)不起作用。我無法弄清楚如何獲得-s標誌來指定換行符作爲唯一的列分隔符。使用列命令在* nix中格式化列表

+2

你可以張貼一些樣品輸入和輸出? –

+0

請注意,「列」在Linux(和Mac OS X 10.7.4)上可用。它不一定適用於Unix的其他變體;例如,POSIX沒有標準化。 –

+3

如果你想要3列輸出,'pr -l 1 -t -3'將會非常接近你想要的'column'產生的結果。對於N列,將3更改爲N;指定一個寬度,加上'-w 120'或其他什麼。 –

回答

13

從理論上講,指定一個換行符,你可以使用$'...'符號,這就像不同的是'...'它支持C風格的轉義序列:

column -t -s $'\n' list-of-entries.txt 

不過,我真的不明白這個的目的。的換行是行分隔符,所以$'\n'列分隔符等價於不具有任何列分隔符在所有:

column -t -s '' list-of-entries.txt 

這意味着輸入將僅具有一個列進行處理;所以它等效於不使用column都:

cat list-of-entries.txt 

好像你實際上想用-t標誌,因爲-t標誌的目的是確保輸入的每一行成爲一行輸出,聽起來不像你想要的那樣。我猜你想這樣的:

column list-of-entries.txt 

將對待list-of-entries.txt每一行的值被擺在那column產出表的一個單元。

+0

充分理解提問者遇到的實際問題的絕佳解釋! – YaOzI

+0

你打在頭上!感謝您的好解釋! –

6

此作品輸出選項卡的漂亮打印版本分隔的文件

column -t -s $'\t' list-of-entries.txt