合并文件 - 什么错了?

时间:2017-07-19 12:15:04

标签: awk merge

我的脚本中的问题在哪里我想将$ 1(第一个文件)与$ 21(第二个文件)进行比较。所有内容都以awk和制表符分隔。

INPUT:
1st file:
1         soup
3         bread
5         roll

2nd file:
a....$20   1
b....$20   2
c....$20   3
d....$20   4
e....$20   5

OUTPUT
a....$20   1   soup
b....$20   2   
c....$20   3   bread
..etc..

MY SCRIPT


awk -F'\t' -v OFS="\t" 'NR==FNR{a[$1]=$2; next} {if($21 in a) print $0a,[$2]; else print $0}' file2 file1

谢谢。

2 个答案:

答案 0 :(得分:2)

在您的密码中,更改:

if($21 in a) print $0a,[$2]

if($21 in a) print $0, a[$21]

另外,将参数更改为awk命令

从:

file2, file1

成:

file1, file2

答案 1 :(得分:0)

尝试以下操作,如果它们是制表符或空格,您可以按照Input_file设置FS和OFS。

awk 'FNR==NR{a[$1]=$2;next} {print $0,a[$NF]}' 1st_file 2nd_file

EDIT1: 显示OP以上代码的工作原理。

awk 'FNR==NR{a[$1]=$2;next} {print $0,a[$NF]}' 1st_file 2nd_file
a....$20   1 soup
b....$20   2
c....$20   3 bread
d....$20   4
e....$20   5 roll