如何使用AWK合并两个文件?

文件1具有5个字段ABCDE,其中字段A是整数

文件2具有3个字段AFG

文件1中的行数比文件2中的行数大得多(20 ^ 6到5000)

文件1中A的所有条目都出现在文件2中的A字段中

我喜欢按字段A合并两个文件并携带F和G

所需的输出是ABCDEFG

文件1

 A     B     C    D    E

4050 S00001 31228 3286 0

4050 S00012 31227 4251 0

4049 S00001 28342 3021 1

4048 S00001 46578 4210 0

4048 S00113 31221 4250 0

4047 S00122 31225 4249 0

4046 S00344 31322 4000 1

文件2

A     F    G   

4050 12.1 23.6

4049 14.4 47.8

4048 23.2 43.9

4047 45.5 21.6

所需的输出

A    B      C      D   E F    G

4050 S00001 31228 3286 0 12.1 23.6

4050 S00012 31227 4251 0 12.1 23.6

4049 S00001 28342 3021 1 14.4 47.8

4048 S00001 46578 4210 0 23.2 43.9

4048 S00113 31221 4250 0 23.2 43.9

4047 S00122 31225 4249 0 45.5 21.6

回答:

$ awk ‘FNR==NR{a[$1]=$2 FS $3;next}{ print $0, a[$1]}’ file2 file1

4050 S00001 31228 3286 0 12.1 23.6

4050 S00012 31227 4251 0 12.1 23.6

4049 S00001 28342 3021 1 14.4 47.8

4048 S00001 46578 4210 0 23.2 43.9

4048 S00113 31221 4250 0 23.2 43.9

4047 S00122 31225 4249 0 45.5 21.6

4046 S00344 31322 4000 1

以上是 如何使用AWK合并两个文件? 的全部内容, 来源链接: utcz.com/qa/402496.html

回到顶部