使用awk和UNIX使用4个字段找出两个文件中的公共行

南田

我有2个档案。如果file1和file2的字段1、2、4和5匹配,那么我要在输出文件中一个接一个地打印file1和file2的整行。

文件1:

sc2/80         20      .        A       T         86   F=5;U=4
sc2/60         55      .        G       T         76   F=5;U=4 
sc2/68         20      .        T       C         71   F=5;U=4
sc2/24         24      .        T       G         31   F=5;U=4

文件2:

sc2/99         84      .        C       G         61   F=5;U=4
sc2/80         20      .        A       T         30   F=5;U=4
sc2/60         40      .        G       T         76   F=5;U=4 
sc2/30         20      .        T       C         71   F=5;U=4
sc2/24         24      .        T       G         91   F=5;U=4

预期产量:

sc2/80         20      .        A       T         86       F=5;U=4
sc2/80         20      .        A       T         30       F=5;U=4
sc2/24         24      .        T       G         31       F=5;U=4
sc2/24         24      .        T       G         91       F=5;U=4

我是该领域的新手,感谢您的帮助。

您可以使用多维数组:

awk 'FNR==NR{a[$1,$2,$4,$5]=$0;next}{if(b=a[$1,$2,$4,$5]){print b;print}}' file1 file2

FNR(记录的文件号)等于NRawk处理第一个文件时的时间。

a[$1,$2]=$0a[$1 SUBSEP $2]=$0相同a[$1"\034"$2]=$0,并且($1,$2)in a($1 SUBSEP $2)in a相同($1"\034"$2)in a

您也可以替换if(b=a[$1,$2,$4,$5]){print b;print}if(($1,$2,$4,$5)in a){print a[$1,$2,$4,$5];print}如果!("index" in a)a["index"]就像a["index"]=""

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Unix和Awk比较两个文件

使用 awk 比较来自两个不同文件的两个字段

awk查找两个文件中第二个字段之间的差异

使用awk使用特定字段查找两个文件中的差异

使用AWK,Join等在UNIX中的两个文件之间进行自然联接

使用awk在包含跨两个文件的字段内分隔符的单个字段中搜索字符串?

使用awk比较两个文件中的两列

使用shell命令在两个文件中打印公共行

使用SED或AWK复制与xml文件中两个不同模式匹配的两行

如何使用来自两个文件但在awk中的特定列中的公共键打印值

使用awk在三个字段上合并两个csv文件也会创建一个新的csv文件

使用awk比较两个文件

使用 AWK 过滤两个文件

如何比较文件中的两个字段并使用awk打印包含数据的字段?

使用Awk在两个文件中匹配五列

使用awk从两个文件中获取数据

如何在awk中使用公共密钥合并两个文件?

在公共列上合并两个文件并使用awk打印所有列

awk根据两个文件中3个字段的匹配来更新文件

awk比较两个文件并在文件1中打印第一个字段

如何使用mysql比较两个不同表中的两个字段?

使用awk将两个模式之间的行输出到不同的输出文件中

使用sed或awk修改文件中符合两个条件的行

bash从两个文件中删除公共行

在SQL Server中将两个表中的公共字段与XML一起使用

使用公共列合并两个Excel文件

使用公共列合并两个文件

如何使用awk基于公共字段合并文件中的行?

使用Python在两个Excel中找出丢失的事务