![](/img/trans.png)
[英]How to find strings from a list that didnt find exact matches from a file
[英]How to grep exact matches from a file of a list of strings
我有一个文件A,其中一列包含如下字符串列表:
ADAMTS9
AIP
....
我想使用文件A中的字符串来grep文件B中包含它们的行,文件B如下所示:
chr13 50571142 50592603 ADAMTS9 21461 +
chr19 50180408 50191707 AIP 11299 +
chr19 50180408 50193000 AIP-S1 6532 -
我用过:
grep -F -i -w -f A B
它能够上面所有3行。 但是,我只希望前两行是grep'ed而第三行与AIP-S1不完全匹配AIP。
有人能告诉我如何修复命令吗?
谢谢。
您可以使用awk代替:
awk 'FNR==NR{a[$1];next} ($4 in a)' A B
chr13 50571142 50592603 ADAMTS9 21461 +
chr19 50180408 50191707 AIP 11299 +
或者在任何领域进行搜索:
awk 'FNR==NR{a[$1];next} {for (i=1; i<=NF; i++) if ($i in a) print}' A B
您正在使用-w
进行全字搜索。 问题是在“AIP-S1”中,“ - ”字符不是单词字符。 所以“AIP” 就是一个完整的词。
这个疯狂的命令可以将模式文件转换为包含“类字边界”模式:
$ grep -if <(sed 's/^/\\(^\\|[[:space:]]\\)/; s/$/\\($\\|[[:space:]]\\)/' A) B
chr13 50571142 50592603 ADAMTS9 21461 +
chr19 50180408 50191707 AIP 11299 +
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.