awk将匹配的字段更改为另一个

时间:2019-10-22 18:25:20

标签: awk

在下面,如果$1的{​​{1}}和f2中的匹配项,我尝试更新/更改$2f2的内容$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,

1 个答案:

答案 0 :(得分:2)

主要是您只是忘记为每个文件设置FS:

awk 'NR==FNR{a[$1]=$2; next} $2 in a{$1=a[$2]} 1' FS='\t' file1 FS=',' OFS=',' file2