特定の数字を含むファイルから特定の行を選択したいと思います。検索したいファイル名はです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
ファイルから検索パターンをインポートするように指示し、-
ファイルが実際に標準入力(あなたの場合はパイプ出力)であることを伝えます。
非GNUのgrep
使用についてコメントしてくれた@riciに感謝します。
... | grep -f /dev/stdin os_clusters/piRNA_clusters.bed