【问题标题】:Pretty print a space delimited file [duplicate]漂亮地打印一个空格分隔的文件[重复]
【发布时间】:2018-04-14 02:29:17
【问题描述】:

我有一个来自 R 的文件。它基本上是 write.table 命令的输出,使用分隔符 " "。此文件的示例如下所示:

file1.txt
5285 II-3 II-2 2 NA NA NA NA 40 NA NA c.211A>G
8988 III-3 III-4 1 NA NA NA NA NA NA NA c.211A>G
8F412 III-3 III-4 2 NA NA 28 NA NA NA NA c.211A>G
4H644 III-3 III-4 2 NA NA NA NA NA NA NA NA

我需要的是一个非常特定格式的新文件,基本上我需要使用空格对齐所有列,我不能使用制表符。

所需的输出将是

5285   II-3   II-2  2 NA NA NA NA 40 NA NA c.211A>G
8988   III-3  III-4 1 NA NA NA NA NA NA NA c.211A>G
8F412  III-3  III-4 2 NA NA 28 NA NA NA NA c.211A>G
4H644  III-3  III-4 2 NA NA NA NA NA NA NA NA

因此,在第一行5285II-3 之间将有3 个空格,而在第三行8F412III-3 之间只有两个空格。第一个树字段的长度可以不同,但​​是其余列的长度始终是固定的(两个字符),但最后一个可以是 12 个字符

我可以在文本编辑器中执行此操作,但我有一个非常大的文件,我想使用 bashawkR 来执行此操作

【问题讨论】:

标签: bash awk formatting


【解决方案1】:

使用column:

$ column -t file
5285   II-3   II-2   2  NA  NA  NA  NA  40  NA  NA  c.211A>G
8988   III-3  III-4  1  NA  NA  NA  NA  NA  NA  NA  c.211A>G
8F412  III-3  III-4  2  NA  NA  28  NA  NA  NA  NA  c.211A>G
4H644  III-3  III-4  2  NA  NA  NA  NA  NA  NA  NA  NA

【讨论】:

    【解决方案2】:

    这是另一种方法

    $ tr ' ' '\t' <file | expand -t2
    
    5285  II-3  II-2  2 NA  NA  NA  NA  40  NA  NA  c.211A>G
    8988  III-3 III-4 1 NA  NA  NA  NA  NA  NA  NA  c.211A>G
    8F412 III-3 III-4 2 NA  NA  28  NA  NA  NA  NA  c.211A>G
    4H644 III-3 III-4 2 NA  NA  NA  NA  NA  NA  NA  NA
    

    【讨论】:

      【解决方案3】:

      使用awk,以便您可以严格控制每个字段的格式:

      awk '{ printf("%-5s %-5s %-5s %s %s %s %s %s %s %s %s %s\n", $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) }' file
      

      生产:

      5285  II-3  II-2  2 NA NA NA NA 40 NA NA c.211A>G
      8988  III-3 III-4 1 NA NA NA NA NA NA NA c.211A>G
      8F412 III-3 III-4 2 NA NA 28 NA NA NA NA c.211A>G
      4H644 III-3 III-4 2 NA NA NA NA NA NA NA NA
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-11
        • 2013-01-20
        • 2017-05-01
        • 2021-10-10
        • 2012-10-08
        • 1970-01-01
        • 2011-10-29
        相关资源
        最近更新 更多