我的脚本中的问题在哪里我想将$ 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
谢谢。
答案 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