অন্যটিতে তালিকাবদ্ধ একটি ফাইল থেকে প্যাটার্ন সন্ধান করুন


15

আমি একটি ফাইলে তালিকাভুক্ত নিদর্শনগুলি খুঁজতে এবং অন্য ফাইলে সেগুলি খুঁজতে চাই। দ্বিতীয় ফাইলটিতে সেই নিদর্শনগুলি কমা দ্বারা পৃথক করা আছে।

যেমন প্রথম ফাইল এফ 1 এর জিন রয়েছে nes

ENSG00000187546
ENSG00000113492  
ENSG00000166971

এবং দ্বিতীয় ফাইল এফ 2 এর সাথে আমার আরও কিছু কলাম (পাঁচটি কলাম) এর সাথে সেই জিন রয়েছে need

 region     gene           chromosome  start       end

 intronic   ENSG00000135870 1   173921301   173921301
intergenic  ENSG00000166971(dist=56181),ENSG00000103494(dist=37091) 16 53594504    53594504
ncRNA_intronic  ENSG00000215231 5   5039185 5039185
intronic    ENSG00000157890 15  66353740    66353740

সুতরাং দ্বিতীয় ফাইলটিতে উপস্থিত জিন ENSG00000166971টি গ্রেপ-তে প্রদর্শিত হবে না কারণ এর সাথে আরও একটি জিন রয়েছে যা কমা দ্বারা পৃথক হয়েছে।

আমার কোডটি হ'ল:

grep -f "F1.txt" "F2.txt" >output.txt

আমি তাদের মানগুলির মধ্যে একটি উপস্থিত থাকলেও এবং এর সাথে সম্পর্কিত ডেটা চাই। এটি করার কোনও উপায় আছে?


1
এটি কি আপনার বাস্তবায়নটি grepডিফল্টরূপে তার নিদর্শনগুলি নোঙ্গর করে দেয়? না grep -f <(echo a) <(echo 'a,b')কোন আউটপুট উত্পাদন?
জোসেফ আর।

উত্তর:


11

আপনি কোন সংস্করণ grepব্যবহার করছেন? আমি আপনার কোড চেষ্টা করেছিলাম এবং নিম্নলিখিত ফলাফল পেয়েছি:

$ grep -f file1 file2
ENSG00000187546
ENSG00000113492
ENSG00000166971,ENSG00000186106

আপনি শুধু ফলাফল মেলে আপনি ব্যবহার করতে পারেন চান grepএর -oসুইচ শুধুমাত্র কিছু প্রতিবেদন করছি যে, মিল:

$ grep -o -f file1 file2 
ENSG00000187546
ENSG00000113492
ENSG00000166971

গ্রেপ সংস্করণ

$ grep --version
grep (GNU grep) 2.14
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

F1.txt এ স্ট্রাই অক্ষর?

এটি আরও ডিবাগ করার সময় আমি ফাইলের ২ য় লাইনের শেষে বেশ কয়েকটি বিপথগামী জায়গা লক্ষ্য করেছি F1.txt। আপনি তাদের ব্যবহার দেখতে পাবেন hexdump

$ hexdump -C ff1
00000000  45 4e 53 47 30 30 30 30  30 31 38 37 35 34 36 0a  |ENSG00000187546.|
00000010  45 4e 53 47 30 30 30 30  30 31 31 33 34 39 32 20  |ENSG00000113492 |
00000020  20 0a 45 4e 53 47 30 30  30 30 30 31 36 36 39 37  | .ENSG0000016697|
00000030  31 0a                                             |1.|
00000032

তারা মত ASCII কোড 20 আপনি এখানে তাদের মধ্যে তাদের দেখতে পারে দেখা: 32 20 20 0a


1
গ্রেপ - রূপান্তর জিএনইউ গ্রেপ ২.6.৩ কপিরাইট (সি) ২০০৯ ফ্রি সফটওয়্যার ফাউন্ডেশন, ইনক। লাইসেন্স জিপিএলভি 3 + জিএনইউ জিপিএল সংস্করণ 3 বা তার পরের < gnu.org/license/gpl.html > এটি নিখরচায় সফ্টওয়্যার: আপনি পরিবর্তন করতে মুক্ত এবং এটি পুনরায় বিতরণ করুন। আইন দ্বারা অনুমোদিত সীমাতে কোনও গ্যারান্টি নেই। আমি কেবল ম্যাচগুলি পাচ্ছি যদি সেগুলি ব্যক্তি হিসাবে উপস্থিত থাকে এবং আপনি যেমন বলেছিলেন তেমন নয় range আশ্চর্যের বিষয়, আমি যে একমাত্র ম্যাচটি পাচ্ছি তা হ'ল প্যাটার্নগুলি মেলে এমন ফাইলের শেষ প্যাটার্ন।
রন

1
আমি আমার দ্বিতীয় ফাইলটির আরও সম্পূর্ণ সংস্করণ পেস্ট করেছি যদিও কম সারি রয়েছে, এবং এটি অনুসন্ধানের চেষ্টা করেছি second এটি দ্বিতীয় ফাইলের সাথে দ্বিতীয় সারির সাথে মেলে না
রন

1
@ রন - আপনার সমস্যার কারণ হিসাবে F1.txt ফাইলের স্ট্রিং শেষে আপনার বিপথগামী অক্ষর রয়েছে। এটি নিশ্চিত করেছে এটি গ্রেপ (জিএনইউ গ্রেপ) 2.5.1
এসএমএল

1
আমি স্রেফ ফাইলটি রেকর্ডারটিতে ইউনিক্স-এলএফ ফর্ম্যাটে সংরক্ষণ করেছি এবং এখন এটি কাজ করে !!
রন

2
@ রন - হ্যাঁ হোয়াইটস্পেসের মজা 8-)
slm
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.