特定の番号を含む特定の行をファイルから取り出したい。検索したいファイルは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
パイプによって生成された用語については?
あなたが欲しいと思う
... | grep -f - os_clusters/piRNA_clusters.bed
-f
は、ファイルから検索パターンを取得するようgrep
に指示し、-
は、このファイルが実際にはstdin(あなたの場合はパイプの出力)であることを伝えます。
@riciのコメントのおかげで、GNU以外のgrep
を使用
... | grep -f /dev/stdin os_clusters/piRNA_clusters.bed