我在 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