在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |