2013-10-02 40 views
1

錯列寬所以我有這個作爲我的數據文件UNIX命令列:頁眉

Account Number ena5LHtEj Name ena5LHtEj Account Type ena5LHtEj Balance 
1 ena5LHtEj foo ena5LHtEj 1 ena5LHtEj 100 
1 ena5LHtEj foo ena5LHtEj 1 ena5LHtEj 100 
1 ena5LHtEj foo ena5LHtEj 1 ena5LHtEj 100 

1行是列名。 ena5LHtEj是一個隨機生成的分隔符。其他3行是行。這裏是我跑

column -t -s "$delimiter" data 

定界符變量的值ena5LHtEj這裏的命令它給

Accou Numb r  N m  Accou Typ  B l c 
1  foo 1 100 
1  foo 1 100 
1  foo 1 100 
1  foo 1 100 

所以行被正確解析輸出,但列標題不明白解析。這不是因爲標題名稱中的空格,因爲我試圖刪除空格。第一行和第二行之間的區別僅在於寬度。我用bash在ubuntu終端上運行這個。

下面是它應該給/我想

Account Number Name Account Type Balance 
1    foo 1   100 
1    foo 1   100 
1    foo 1   100 
1    foo 1   100 

回答

2

你的麻煩來自於誤解,認爲分隔符是不是一個字符串,而是一組字符;其中的每一個(不是「按給定順序全部」)是可能的分隔符。因此,「數字」之類的東西在「e」處被分割,因爲「e」是「ena5LHtEj」的一部分。

試試這個:

column -t -s "|" <(sed 's/ena5LHtEj/|/g' < data) 

字符串分隔符,你已經有了轉換成一個字符分隔符(|在這種情況下)。結果是您在問題中指定的內容。

+0

啊對,我可以隨時更改分隔符,所以我會將分隔符本身更改爲管道。謝謝! – Achshar