File 在两个文件的列中查找匹配项
我必须创建如下所示的文件: 文件1File 在两个文件的列中查找匹配项,file,awk,match,field,File,Awk,Match,Field,我必须创建如下所示的文件: 文件1 mir1 CAT1;DEM20;SCD;LIART;COLECC2 mir2 ELAM2;SIRT1;FROMO;PER1;PER2 文件2 mir1 DEM20;LIART;ACACA;FOXO1;DIPEM mir2 ELAM2;SIRT1;FROMO;PER1;PER2 我想比较第2列中的两个文件,以计算名称中的匹配项,它们之间用;,第2列中的名称数量可能不同,因此这只是一个示例 所需的输出应该类似于匹配的计数,例如: 文件3
mir1 CAT1;DEM20;SCD;LIART;COLECC2
mir2 ELAM2;SIRT1;FROMO;PER1;PER2
文件2
mir1 DEM20;LIART;ACACA;FOXO1;DIPEM
mir2 ELAM2;SIRT1;FROMO;PER1;PER2
我想比较第2列中的两个文件,以计算名称中的匹配项,它们之间用;,第2列中的名称数量可能不同,因此这只是一个示例
所需的输出应该类似于匹配的计数,例如:
文件3
mir1 2
mir2 5
因为两个文件之间的第一行有2个匹配项,第二行有5个匹配项
我曾尝试使用awk将每个名称格式化为一个列,但最终一次生成了许多列并进行了比较
有什么帮助吗
谢谢
注意:这使用正则表达式匹配而不是字符串相等,只要值中没有正则表达式特殊字符,就可以正常工作
$ awk -v s=";" 'NR==FNR {a[$1]=s $2 s; next}
{c=0; n=split($2,b,s);
for(i=1;i<=n;i++) c+=(a[$1] ~ s b[i] s);
print $1,c}' file1 file2
mir1 2
mir2 5