用awk选择在文件中的行,根据文件B找到匹配 [英] using awk to select lines in file A, based on finding matches in file B

查看:542
本文介绍了用awk选择在文件中的行,根据文件B找到匹配的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个文件,​​文件中的是这样的:

  1 101427 GENE | ACT-A 1 101589 GENE | ACT-B 0.0357
1 101427 GENE | ACT-A 1 101785 GENE | ACT-C 0.6357
1 101427 GENE | TAD-J 1 101437 GENE | TAD-L 0.8967
1 101427 GENE | TAD-J 1 158988 GENE | TAD-O 0.0067
1 101427 GENE | TAD-J 1 159999 GENE | TAD-V 0.5427
1 101427 GENE | POL-D 1 101437 GENE | POL-H 0.2347

和文件B看起来是这样的:

 基因| ACT-A
GENE | TAD-L
GENE | POL-D

我想选择的文件A,行无论在哪里3列或列6在文件B.匹配在上面的例子中,输出将如下所示:

  1 101427 GENE | ACT-A 1 101589 GENE | ACT-B 0.0357
1 101427 GENE | ACT-A 1 101785 GENE | ACT-C 0.6357
1 101427 GENE | TAD-J 1 101437 GENE | TAD-L 0.8967
1 101427 GENE | POL-D 1 101437 GENE | POL-H 0.2347

这能与一些AWK简单地实现。

干杯。


解决方案

 的awk'FNR == {NR键[$ 1];接下来} $ 3键|| $ 6键'FILEB的fileA

I have two files, file A looks like this:

1       101427      GENE|ACT-A      1       101589      GENE|ACT-B    0.0357
1       101427      GENE|ACT-A      1       101785      GENE|ACT-C    0.6357
1       101427      GENE|TAD-J      1       101437      GENE|TAD-L    0.8967
1       101427      GENE|TAD-J      1       158988      GENE|TAD-O    0.0067
1       101427      GENE|TAD-J      1       159999      GENE|TAD-V    0.5427
1       101427      GENE|POL-D      1       101437      GENE|POL-H    0.2347

and file B looks like this:

GENE|ACT-A
GENE|TAD-L
GENE|POL-D

I would like to select the lines in file A, where either column 3 or column 6 have a match in file B. In the above example the output would look like:

1       101427      GENE|ACT-A      1       101589      GENE|ACT-B    0.0357
1       101427      GENE|ACT-A      1       101785      GENE|ACT-C    0.6357
1       101427      GENE|TAD-J      1       101437      GENE|TAD-L    0.8967
1       101427      GENE|POL-D      1       101437      GENE|POL-H    0.2347

Can this be achieved simply with some awk.

Cheers.

解决方案

awk 'FNR == NR {keys[$1]; next} $3 in keys || $6 in keys' fileB fileA

这篇关于用awk选择在文件中的行,根据文件B找到匹配的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆