在下面,如果$1
的{{1}}和f2
中的匹配项,我尝试更新/更改$2
中f2
的内容$1
中的。如果不匹配,则按f1
中的原样打印该行。下面的两个逗号运行,但是f2
值保持不变。谢谢:)。
$1
f1 awk 'FNR==NR { a[$1]=$2; next } { if(a[$2]){$1=a[$2] }; print }' OFS=","
gawk '{
if(NR==FNR){
a[$1]=$2;
next
}
if($2 in a){
$1=a[$2];
print $0
}
else {
print $0
}
}' OFS="," f1 f2
tab-delimited
f2 file1 header
xxxx:7230 aaa11
xxxx:7231 yyyyy
xxxx:25478 zzzz
comma-delimited
所需
header1
header2
aaa11c,xxxx:7230,111,x1 111,yes
yyyyy,xxxx:7325,222,x2 222,
zzzz,xxxx:7329,222,x3 333,
答案 0 :(得分:2)
主要是您只是忘记为每个文件设置FS:
awk 'NR==FNR{a[$1]=$2; next} $2 in a{$1=a[$2]} 1' FS='\t' file1 FS=',' OFS=',' file2