将特定列与另一个文件匹配

将特定列与另一个文件匹配

我在 fileA 和 fileB 下面有两个文件。第 2 列(文件 A)的前三位数字将与第 1 列(文件 B)匹配。 Column1(文件 A)必须等于 63。

文件A

 63,918234
 64,918093
 63,920983

文件B

 918,XXX
 920,YYY

到目前为止,我的代码只打印 fileA 的行。

 awk -F~ 'NR==FNR{a[$1]=$1;next}{n=substr($2,1,3); sub(/^0+/, "", n); for(i in a)if(n~"^"a[i] && $1 ~"63")print $0}' fileB fileA

我的预期输出是

63,918234,XXX
63,920983,YYY

答案1

也许您会因为使用非默认字段分隔符awk不会删除前导空格而感到困惑?也许最简单的方法是强制对字段进行数字处理:

$ awk -F, 'NR==FNR {a[$1+0]=$2;next} $1+0==63 {print $0","a[substr($2,1,3)+0]}' fileB fileA
 63,918234,XXX
 63,920983,YYY

相关内容