Я хочу выбрать определенные строки, содержащие данное число из файла. Файл, который я хочу найти, называется 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
термины, созданные конвейером?
Ответы:
Я думаю ты хочешь
-f
говоритgrep
получить шаблон поиска из файла и-
сообщает, что этот файл на самом деле является stdin (вывод канала в вашем случае).Благодаря @ RICI замечания, неиспользования GNU
grep
использованияисточник
grep: -: No such file or directory
-f /dev/stdin
вместо-f -
<()
синтаксис bash :grep -f <(awk ...) os_clusters/piRNA_clusters.bed