1

所以我有这个作为我的数据文件

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
4

1 回答 1

2

您的麻烦来自于对分隔符不是字符串而是一组字符的误解;其中每一个(不是“所有按给定顺序”)都是可能的分隔符。因此,像“Number”这样的东西在“e”处被拆分,因为“e”是“ena5LHtEj”的一部分。

尝试这个:

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

将字符串分隔符转换为单字符分隔符(|在本例中)。结果就是您在问题中指定的内容。

于 2013-10-02T14:25:19.267 回答