gpt4 book ai didi

awk - 在 awk 中使用多个条件

转载 作者:行者123 更新时间:2023-12-04 19:04:03 25 4
gpt4 key购买 nike

我想从基于多个条件(来自同一个文件)的大文件中提取信息以及从其他小文件中进行模式搜索,以下是我使用的脚本:

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,$4,$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

最佳答案

您可以简单地使用 bool 逻辑,从您的输入文件中,您似乎可以摆脱“正常”输入字段拆分,这将允许您在比较中摆脱该空间:

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

例如,这是我的测试 file2.txt :
ARS-BFGL-BAC-1020
ARS-BFGL-BAC-10172

这是上面命令的结果:
834269752   A   A

关于awk - 在 awk 中使用多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27042479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com