合并两个文件,一次合并一列


12

我有以下格式的2个大文件(3000列,15000行)

file1(制表符分隔):

1/0 0/0 0/0
0/0 1/1 0/0
1/1 0/1 0/0

file2(制表符分隔):

3 5 2
1 7 10
3 4 3

我想将每个文件的第一列中的值与“:”分隔符组合在一起,然后移至第二,第三等列。所需的输出(制表符分隔):

1/0:3 0/0:5 0/0:2
0/0:1 1/1:7 0/0:10
1/1:3 0/1:4 0/0:3

效率并不重要,因此任何语言都可以。如果这已经被问过了,我深表歉意。

Answers:



9
awk '{
    getline f2 < "file2"
    split(f2, a)
    for (i=1; i<=NF; i++) 
        printf "%s:%s\t", $i, a[i]
    print ""
}' file1

效果很好,尽管我更喜欢tink响应的简单性。
乔恩·德格纳

1
@JonDegner,然后如果该答案(或此答案)解决了您的问题,请花一点时间并单击左侧的复选标记以接受它。这会将问题标记为已回答,并且是在Stack Exchange网站上表达感谢的方式。
terdon

6

稍微不同的方法:

paste -d: <(xargs -n1 <file1) <(xargs -n1 <file2) | xargs -n 3

我对此表示赞同,但只是意识到-n 3部分仅适用于提供的示例。需要修改列数以适应实际数据。
天衣

@tink显然是的。不过,您可以使用来计算列数head -n1 | wc -w
Michael Vehrs's

h 那并不意味着您要回应,我很清楚如何解决它……只是一种解释,您的回答应该少投票:}
思考
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.