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

Bash 如何在屏幕上将三个文本文件合并为三列,bash,shell,awk,Bash,Shell,Awk,如何将三个文本文件合并到屏幕上的三列中 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

如何将三个文本文件合并到屏幕上的三列中

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 <(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

$paste
:|paste-d''file1-file2-file3 | column-ts“|”
将多个文件合并为一个表
column-t
-s
作为分隔符
“|”

输出将是这样的

1    A    1
2    B    2
3    C    3
     D    
     E   

如果您只有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.txt
foo2.txt
中的最大线宽来选择选项卡扩展
45
12
,并且
foo2.txt
本身不
粘贴file1.txt file2.txt file3.txt,而不插入
,您想做什么?我很快就试过了,看起来很好。如果没有,原始文件是什么样子的?嗯……它可以处理这些示例行,但是当一个文本文件中的一行有另一个长度时,它就不再工作了。我尝试粘贴-d'\t'file1.txt file2.txt file3.txt>out.csv它可以工作,但在我的file4.txt中,所有行的末尾都有一个不可打印的字符,然后它再次崩溃。F**k@user3022917不知道你的意思,当一个文本文件中的一行有另一个长度时,它就不工作了。我在所有文件中尝试了不同长度的行,只要选择45和12足够大以处理最大长度的行,它就可以工作。我不知道什么是
file4.txt
,这是你第一次提到它。