我试图搜索文件中一组模式的完全匹配。
我试过了:
grep -w -f IDs.txt seqs.txt > output.txt
但我错过了一些模式。
示例:
IDs.txt
denovo23
denovo28
denovo62
denovo897
denovo621
denovo622
seqs.txt
denovo23 HNS.2_9729 HNS.2_20867
denovo28 HNS.6_14948 HNS.6_148211 HNS.11_327521
denovo62 HNS.7_468475 HNS.7_631780
denovo897 WNA.2_58410 WNA.1_175071
denovo621 WNA.2_20180 WNA.2_294219
denovo622 CES.1_24310 HNS.6_26786
denovo637 HNS.2_262147
denovo586 HNS.1_332240
预期产出:
denovo23 HNS.2_9729 HNS.2_20867
denovo28 HNS.6_14948 HNS.6_148211 HNS.11_327521
denovo62 HNS.7_468475 HNS.7_631780
denovo897 WNA.2_58410 WNA.1_175071
denovo621 WNA.2_20180 WNA.2_294219
denovo622 CES.1_24310 HNS.6_26786
实际输出:
denovo23 HNS.2_9729 HNS.2_20867
denovo28 HNS.6_14948 HNS.6_148211 HNS.11_327521
denovo62 HNS.7_468475 HNS.7_631780
denovo897 WNA.2_58410 WNA.1_175071
所以我需要一种方法来对文件列表中的模式进行精确匹配。我已经看到了几种完全匹配的方法,但是没有一种方法可以使用文件中的列表 - 任何帮助都会受到赞赏。
答案 0 :(得分:0)
您的grep -w -f
命令在Debian Testing& Bash 4.4& GNU grep 2.27甚至在我的FreeBSD11 VM中使用Bash 4.4和BSD grep 2.5.1
我找不到你的系统有什么问题导致grep失败。
与此同时,您可以使用awk执行相同的工作(在Debian中使用gnu awk和使用非gnu awk的FreeBSD进行测试):
awk 'NR==FNR{a[$1];next}$1 in a' ids.txt seq.txt