我想从文件中挑选出包含给定数字的某些行。我要搜索的文件名为os_clusters/piRNA_clusters.bed
.
awk '{if (a[$0]++ == 0) {split($0,b,"."); ;split(b[1],c,"r"); print c[3]}};' test_non_enriched | xargs grep {} os_clusters/piRNA_clusters.bed
第一部分(在管道之前)起作用 - 它生成要搜索的术语,例如 8707、8824 等。但是,后一部分则不起作用。
awk '' ... | xargs grep {} os_clusters/piRNA_clusters.bed
它不会在目标文件中搜索管道生成的术语,而是将搜索术语视为输入文件。因此,我收到如下错误消息:
grep: 8707: No such file or directory
grep: 8824: No such file or directory
我需要更改什么才能在文件中搜索os_clusters/piRNA_clusters.bed
管道生成的术语?
答案1
我想你想要
... | grep -f - os_clusters/piRNA_clusters.bed
-f
告诉grep
它从文件中获取其搜索模式,并-
告诉它该文件实际上是标准输入(在您的情况下是管道的输出)。
感谢@rici 的评论,用于非 GNUgrep
使用
... | grep -f /dev/stdin os_clusters/piRNA_clusters.bed