পাইপিং অনুসন্ধান শব্দটি (ফাইলের নাম নয়) গ্রেপ করতে হবে


23

আমি কোনও ফাইল থেকে একটি নির্দিষ্ট নম্বরযুক্ত কয়েকটি লাইন বেছে নিতে চাই। আমি যে ফাইলটি অনুসন্ধান করতে চাইছি তাকে ডাকা হয় 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পাইপের দ্বারা উত্পাদিত শর্তগুলির জন্য ফাইলটি অনুসন্ধান করতে আমার কী পরিবর্তন করতে হবে ?


উত্তর:


35

আমি মনে করি আপনি চান

... | grep -f - os_clusters/piRNA_clusters.bed

-fবলে grepএকটি ফাইল থেকে তার অনুসন্ধান প্যাটার্ন প্রাপ্ত এবং -এটা বলে যে এই ফাইলটি আসলে stdin (আপনার ক্ষেত্রে পাইপ আউটপুট) হয়।

অ-জিএনইউ grepব্যবহারের জন্য @ রিচি'র মন্তব্যে ধন্যবাদ

... | grep -f /dev/stdin os_clusters/piRNA_clusters.bed

grep: -: No such file or directory
টিপটির

8
আপনি যদি gnu -f /dev/stdin-f -
গ্রেপ

ওএস এক্স 10.8 ওরফে মাউন্টেন সিংহ
আনফুন বিড়াল

6
আপনি <()grep -f <(awk ...) os_clusters/piRNA_clusters.bed
বাশের
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.