加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

在awk中使用多个条件

发布时间:2020-12-13 23:26:08 所属栏目:Linux 来源:网络整理
导读:我想基于多个条件(来自同一个文件)从大文件中提取信息以及从其他小文件中搜索模式,以下是我使用的脚本: awk 'BEGIN{FS=OFS="t"}NR==FNR{a[$0]++;next}$1 in a {print $2,$4,$5}' file2.txt file1.txt output.txt 现在,我想在同一个awk脚本中使用条件,它只
我想基于多个条件(来自同一个文件)从大文件中提取信息以及从其他小文件中搜索模式,以下是我使用的脚本:

awk 'BEGIN{FS=OFS="t"}NR==FNR{a[$0]++;next}$1 in a {print $2,$4,$5}' file2.txt file1.txt >output.txt

现在,我想在同一个awk脚本中使用条件,它只打印第4列元素(ATGC中的任何一个字符)与第5列元素(ATGC中的任何一个字符)匹配的行;该列都在文件1中.

因此,在某种程度上,我想将以下脚本与上面提到的脚本合并:

awk '$4 " "==$5{print $2,$5}' file1.txt

以下是file1.txt的表示:

SNP Name    Sample ID   GC Score    Allele1 - Forward   Allele2 - Forward
ARS-BFGL-BAC-10172  834269752   0.9374  A   G
ARS-BFGL-BAC-1020   834269752   0.9568  A   A
ARS-BFGL-BAC-10245  834269752   0.7996  C   C
ARS-BFGL-BAC-10345  834269752   0.9604  A   C
ARS-BFGL-BAC-10365  834269752   0.5296  G   G
ARS-BFGL-BAC-10591  834269752   0.4384  A   A
ARS-BFGL-BAC-10793  834269752   0.9549  C   C
ARS-BFGL-BAC-10867  834269752   0.9400  G   G
ARS-BFGL-BAC-10951  834269752   0.5453  T   T


enter code here

以下是file2.txt的表示

ARS-BFGL-BAC-10172
    ARS-BFGL-BAC-1020
    ARS-BFGL-BAC-10245
    ARS-BFGL-BAC-10345
    ARS-BFGL-BAC-10365
    ARS-BFGL-BAC-10591
    ARS-BFGL-BAC-10793
    ARS-BFGL-BAC-10867
    ARS-BFGL-BAC-10951

输出应该是:

834269752   A   A
834269752   C   C
834269752   G   G
834269752   A   A
834269752   C   C
834269752   G   G
834269752   T   T

解决方法

您可以简单地使用布尔逻辑,并且从您的输入文件中看起来您可以通过“正常”输入字段拆分逃脱,这将允许您在比较中摆脱该空间:

awk 'BEGIN{OFS="t"}
     NR==FNR{a[$0]++;next}
     ($1 in a) && ($4==$5) {print $2,$5}' file2.txt file1.txt > output.txt

举个例子,这是我的测试文件2.txt:

ARS-BFGL-BAC-1020
ARS-BFGL-BAC-10172

这是上面命令的结果:

834269752   A   A

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读