【问题标题】:How to merge three text files into three columns on screen如何在屏幕上将三个文本文件合并为三列
【发布时间】:2015-06-17 17:12:14
【问题描述】:

如何在屏幕上将三个文本文件合并为三列?

1   A   1
2   B   2
3   C   3
    D
    E

我试过了……

paste file1.txt file2.txt file3.txt | column -s $'\t' -t

...但我总是得到

1   A   1
2   B   2
3   C   3
D
E

提前感谢您的帮助!

file1.txt 的第 1-2 行

USB Device Class ID:
CdRom&Ven_ZALMAN&Prod__Virtual_CD-Rom&Rev_

file2.txt 的第 1-2 行

USB Instance ID:
______XX00000001&1

file3.txt 的第 1-2 行

Last updated (Subkey):
2015-01-12 15:08:45 UTC+0000

【问题讨论】:

  • 不单独使用paste file1.txt file2.txt file3.txt,不通过管道连接到column,做你想做的事吗?我很快尝试了它,它似乎。如果不是,原始文件是什么样的?

标签: bash shell awk


【解决方案1】:

我不知道您的输入文件,但粘贴按预期工作。

$ paste <(seq 1 4) <(seq 10 17) <(seq 5 9)
1       10      5
2       11      6
3       12      7
4       13      8
        14      9
        15
        16
        17

【讨论】:

    【解决方案2】:

    :|paste -d ' ' file1 - file2 - file3 | column -ts "| " 将多个文件组合成一个表格column -t-s 作为分隔符"| "

    输出会是这样的

    1    A    1
    2    B    2
    3    C    3
         D    
         E   
    

    【讨论】:

      【解决方案3】:

      如果您只有 3 个或几个文件要处理,您可以这样做:

      $ paste foo[12].txt | expand -t 45 | paste - foo3.txt | expand -t 12
      USB Device Class ID:                         USB Instance ID:           Last updated (Subkey):
      CdRom&Ven_ZALMAN&Prod__Virtual_CD-Rom&Rev_   ______XX00000001&1         2015-01-12 15:08:45 UTC+0000
                                                   ______XY0000000182
      $
      

      您需要根据foo1.txtfoo2.txt 中的最大线宽选择标签扩展4512

      【讨论】:

      • 嗯...它适用于这个示例行,但是当一个文本文件中的一行有另一个长度时,它就不再起作用了。
      • 我试过 paste -d'\t' file1.txt file2.txt file3.txt > out.csv 它工作,但在我的 file4.txt 是在所有行的末尾一个不可打印的字符它再次崩溃。去他妈的
      • @user3022917 不确定您的意思,当一个文本文件中的一行有另一个长度时,它不起作用。我在所有文件中尝试了不同长度的行,只要选择 45 和 12 足够大以处理最大长度的行,它就可以工作。我不知道file4.txt是什么,你第一次提到。
      猜你喜欢
      • 2013-03-13
      • 1970-01-01
      • 2014-10-26
      • 2012-02-14
      • 2016-10-13
      • 1970-01-01
      • 2012-12-01
      • 2018-02-06
      • 1970-01-01
      相关资源
      最近更新 更多