Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 使用与文件列表完全匹配的grep_Unix_Grep - Fatal编程技术网

Unix 使用与文件列表完全匹配的grep

Unix 使用与文件列表完全匹配的grep,unix,grep,Unix,Grep,我试图在一个文件中搜索一组模式的精确匹配 我试过: 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_327

我试图在一个文件中搜索一组模式的精确匹配

我试过:

    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

所以我需要一种方法来精确匹配文件列表中的模式。我已经看到了几种实现精确匹配的方法,但是没有一种方法可以处理文件中的列表-任何帮助都将不胜感激。

您的
grep-w-f
命令在我的Debian测试&Bash 4.4&GNU grep 2.27上运行良好,甚至在我的带有Bash 4.4和BSD grep 2.5.1的FreeBSD11虚拟机上运行良好。
我找不到你的系统有什么问题导致grep失败

同时,您可以使用awk做同样的工作(使用gnu awk在Debian中进行测试,使用非gnu awk在FreeBSD中进行测试):


在我的Debian&Bash 4.4&gnu grep 2.27中运行良好-您的Bash/grep版本和操作系统是什么?我在Mac OS 10.11上使用Bash 3.2.57和BSD grep 2.5.1。谢谢我还得到了预期的输出(来自Ubuntu12.04的Bash4.2.25和Grep2.10)。也许你真的有太旧的工具,在你输入的东西上绊倒了。例如,检查IDs.txt中的尾随空格。人们一直在报告Mac OS中此grep版本的各种错误:。我认为GNU grep可以在MAC repos中安装——也许你需要安装它
awk 'NR==FNR{a[$1];next}$1 in a' ids.txt seq.txt