awk - 使用 awk 查找两个文件之间的公共(public)行

标签 awk

我有 2 个文本文件,分别称为一和二,就像这两个示例一样:

一:

chr5    315038  315059  PDCD6
chr5    315039  315059  PDCD6
chr5    315035  315136  AHRR
chr5    315010  315111  AHRR
chr5    315032  315133  AHRR

两个:

chr5    315035  315059  PDCD6
chr5    315035  315136  AHRR
chr12   49314934    49315035    CCDC65

我想根据 4 列获取这 2 个文件的相似行。例如,对于文件一和文件二,预期输出如下所示,因为这行在 2 个文件中完全相同(对于所有列)。

预期输出:

chr5    315035  315136  AHRR

我尝试使用以下命令在 awk 中执行此操作,但结果不是我想要的。你知道如何解决吗?

awk 'FNR==NR{a[$1$2$3$3]++;next}!a[$4$3$2$1]' one.txt two.txt > result.txt

最佳答案

如果您想检查完整的行本身,请尝试以下操作。

awk 'FNR==NR{a[$0];next} $0 in a'  one  two

关于awk - 使用 awk 查找两个文件之间的公共(public)行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53915022/

相关文章:

unix - 根据从另一个文件中选择的标题从文件中提取列

bash - 使用 awk 将大文件拆分为具有定义数量的多行记录的 block

unix - 替换以反斜杠为前缀的单引号和双引号

linux - 如何使用 sed 或 awk 在单独的文件中使用模式 grep 行

awk - 是否可以在不指定索引的情况下将项目附加到 awk 中的数组?

linux - 根据另一行将字符串替换为另一个字符串

linux - 获得大于 X 的 awk 结果

bash - 使用 cut -d 在 awk if 条件中提取整行

linux - Perl - 在 Linux 上获取可用磁盘空间使用情况

linux - 使用 awk at 模式拆分文件