【问题标题】:Aligning lines in text file对齐文本文件中的行
【发布时间】:2020-07-12 06:37:01
【问题描述】:

我在文本文件中有如下数据

E993143|65282
C960954567|50222
P1_ABCDEFG_bbb|26153
A960416|25654
D987747|13410

我想在下面使用 linux 进行适当的对齐

E993143                  |65282
C960954567               |50222
P1_ABCDEFG_bbb           |26153
A960416                  |25654
D987747                  |13410

有人可以帮我吗? 注意:我不能使用excel格式

【问题讨论】:

    标签: linux file text formatting alignment


    【解决方案1】:

    您可以在文本上按以下方式使用 awk:

    awk -F"|" '{printf("%-15s \t |%-10i\n", $1, $2)}'
    

    在此,我将第一列的最大长度固定为“15”,第二列固定为“10”。如果您期望更长的长度,您可以更改这些数字。

    解释:

    • “-F”标志将分隔符定义为“|”
    • "%-15s \t |%-10i\n" - 这部分定义了我们希望如何格式化输出字符串。 “-15s”中的“-”用于输出列的左对齐,“15s”用于 15 个字符长度的字符串。同样,'-10i' 用于 10 位整数值。 "\t" 和 "\n" 是在中间添加制表符空间,在末尾添加行空间。

    输出:

    ➜  test cat test.txt | awk -F"|" '{printf("%-15s \t |%-10i\n", $1, $2)}'
    E993143                  |65282     
    C960954567               |50222     
    P1_ABCDEFG_bbb           |26153     
    A960416                  |25654     
    D987747                  |13410     
    ➜  test 
    

    【讨论】:

      【解决方案2】:

      “列”工具可能会对您有所帮助:https://www.stefaanlippens.net/pretty-csv.html。喜欢

      cat test.csv | column -t -s \| -o \|
      

      “|”用作参数输入时需要转义

      【讨论】:

        猜你喜欢
        • 2013-05-23
        • 1970-01-01
        • 2020-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多