合并两个文件,一次一列

Jon*_*ner 12 sed awk text-processing merge data

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

文件 1(制表符分隔):

1/0 0/0 0/0
0/0 1/1 0/0
1/1 0/1 0/0
Run Code Online (Sandbox Code Playgroud)

file2(制表符分隔):

3 5 2
1 7 10
3 4 3
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

效率并不重要,所以任何语言都可以。如果之前有人问过这个问题,我深表歉意。

tin*_*ink 14

像这样的东西?使用您的示例数据:

paste  file{1,2} | awk '{for (i=1;i<=NF/2; i++){printf "%s:%s\t",$i,$(NF/2+i)};printf "\n"}'
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
Run Code Online (Sandbox Code Playgroud)

  • 我爱糊。+1 (2认同)

gle*_*man 9

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


Mic*_*hrs 6

一种稍微不同的方法:

paste -d: <(xargs -n1 <file1) <(xargs -n1 <file2) | xargs -n 3
Run Code Online (Sandbox Code Playgroud)