2013-10-02 18 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