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
,这是你第一次提到它。