Saya ingin memilih baris tertentu yang berisi nomor dari file. File yang ingin saya cari dipanggil 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
Bagian pertama, sebelum pipa bekerja, itu menghasilkan istilah untuk mencari, seperti 8707, 8824 dll. Namun, bagian terakhir tidak.
awk '' ... | xargs grep {} os_clusters/piRNA_clusters.bed
Alih-alih mencari file target untuk istilah yang diproduksi oleh pipa, itu menganggap istilah pencarian sebagai file input. Karenanya, saya mendapatkan pesan kesalahan seperti:
grep: 8707: No such file or directory
grep: 8824: No such file or directory
Apa yang harus saya ubah untuk mencari file os_clusters/piRNA_clusters.bed
untuk istilah yang dihasilkan oleh pipa?
Jawaban:
Saya pikir kamu mau
-f
memberitahugrep
untuk mendapatkan pola pencariannya dari file dan-
mengatakan bahwa file ini sebenarnya stdin (output dari pipa dalam kasus Anda).Berkat komentar @ Rici, karena non GNU-
grep
penggunaansumber
grep: -: No such file or directory
-f /dev/stdin
bukannya-f -
<()
sintaks bash :grep -f <(awk ...) os_clusters/piRNA_clusters.bed