একটি ফাইল থেকে গ্রেপ নিদর্শন পড়া


49

আমার কাছে বেশ কয়েকটি বড় টেক্সট ফাইল রয়েছে এবং ফাইলে UNIQS.txtআমার কাছে grepঅন্য ফাইল থেকে স্ট্রিংয়ের একটি তালিকা রয়েছে । আমি যে কোডটি ব্যবহার করি তা হ'ল

grep -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam

যা কিছুই করে না - উত্পন্ন ফাইলটি খালি। কিন্তু যখন আমি করি

grep -F -f UNIQS.txt EEP_VSL.uniqs.sam > UNIQ_templates.sam

এটি সঠিকভাবে কাজ করে। এটি আমাকে বিভ্রান্ত করে কারণ আমার মনে হয় না যে grepএন্ট্রিগুলিকে UNIQS.txtকোটস এবং স্ল্যাশ ছাড়াই এবং রেজিএক্সপেটের ধরণ হিসাবে ফাইলগুলিতে থাকা (যা নেই) interpret এটি কি সাধারণভাবে দেখা যায় যে আপনি যদি কোনও ফাইল থেকে নিদর্শনগুলি পেয়ে থাকেন তবে এটি স্বয়ংক্রিয়ভাবে ভাববে যে সেগুলি রিজএক্সপেক্স নিদর্শন?

সম্পাদনা: ইন UNIQS.txtফাইল, সেখানে ফর্মের সম্পর্কে newline বিভাজিত স্ট্রিং হয়

HWI-ST365:215:D0GH0ACXX:2:1101:10034:186783

(টেমপ্লেটের নাম হিসাবে পরিচিত) এবং ফাইল EEP_VSL...ট্যাবটি পৃথক কলামগুলি দিয়ে প্রায় 14 টি কলাম এবং প্রথম কলামটি টেম্পলেটটির নাম, তাই মূলত আমি ফাইলটির প্রতিটি টেমপ্লেটের সাথে সম্পর্কিত লাইনটি বের করতে চাই।

উত্তর:


60

-fবিকল্প একটি ফাইল যেখানে, grep নিদর্শন সার্চ নির্দিষ্ট করে। এটি ঠিক কমান্ড লাইনে ( -eযেমন একাধিক বিকল্প রয়েছে সেখানে) প্যাটার্নগুলি পাস করার মতো , আপনি যখন শেল থেকে কল দিচ্ছেন তখন শেলটি দ্বারা প্রসারিত হওয়া থেকে বিশেষ চরিত্রগুলিকে রক্ষা করার জন্য আপনাকে প্যাটার্নটি উদ্ধৃত করতে হবে।

যুক্তি -Eবা -Fবা -P, যদি থাকে,, grep যা সিনট্যাক্স ধরনে লেখা হয় বলে কোন যুক্তি দিয়ে,, grep প্রত্যাশা করে। মৌলিক রেগুলার এক্সপ্রেশনের ; সহ -E, গ্রেপ বর্ধিত নিয়মিত এক্সপ্রেশন আশা করে ; সহ -P(যদি সমর্থিত হয়), গ্রেপ পার্ল নিয়মিত এক্সপ্রেশন প্রত্যাশা করে ; এবং এর সাথে -F, গ্রেপ আক্ষরিক স্ট্রিংগুলি প্রত্যাশা করে। প্যাটার্নগুলি কমান্ড লাইন থেকে আসে বা কোনও ফাইল থেকে আসে না তা বিবেচনা করে।

নোট করুন যে স্ট্রিংগুলি সাবস্ট্রিংগুলি: আপনি যদি a+bএকটি প্যাটার্ন হিসাবে পাস করেন তবে একটি লাইন রয়েছে a+b+cযার সাথে মিল রয়েছে। যদি আপনি সরবরাহিত স্ট্রিংগুলির মধ্যে একটির সাথে যুক্ত লাইনগুলি সন্ধান করতে চান এবং তবে -xবিকল্পটি পাস করুন ।


1
ঠিক আছে যে দরকারী ধন্যবাদ। আমি কি জিজ্ঞাসা করতে পারি, ধরুন যে আমি স্ট্রিংটির সাথে ঠিক মিল করতে চাইছি, অর্থাত যদি স্ট্রিংটি 12345 হয় তবে আমি এটিটি 12345-তে কেবল 123456 বা 123455 ইত্যাদির সাথেই মিলতে চাই না, আমি কীভাবে এটি করব?
এসডিএফ

2
@ এসডিএফ আমার শেষ অনুচ্ছেদটি পড়ুন:-x
গিলস

এটি এত পুরানো, এটি খননের জন্য দুঃখিত sorry যদিও উপরে ব্যাখ্যা সন্ত্রস্ত, এটি একটি বিট অস্পষ্ট কেন ফাইল থেকে ধরন (স্ট্রিং) ছাড়া মিলছে না -Fপতাকা। আমার অনুমানটি কি -উপরের নমুনা লাইনে অক্ষরের অনুক্রম হিসাবে এটি পড়ার কারণ হয়? এর জন্যও কি বর্গাকার বন্ধনী প্রয়োজন হবে না? আমি কয়েকটি নমুনা ফাইল দিয়ে পরীক্ষা করেছি কিন্তু সিদ্ধান্তে পৌঁছিনি।
trs

@trs প্রশ্নটিতে প্রদর্শিত লাইনটিতে (যা আমার উত্তর পোস্ট করার পরে যুক্ত করা হয়েছিল) এমন কোনও চরিত্র নেই যা রেজেক্সপসে বিশেষ অর্থ রাখে, তাই এটি সাথে এবং ছাড়া একই আচরণ করে -F। এটি যেমন চরিত্রগুলির সাথে একটি পার্থক্য তৈরি করবে \[*^$
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

@ গিলিস ধন্যবাদ, এটি আমার ধারণাও ছিল কিন্তু @ এসডিএফ দাবি করে যে "উত্পন্ন ফাইলটি ফাঁকা" (পড়ুন: কোনও মিল নেই) -Fপতাকা ছাড়াই ?
trs

0

আমার একই ত্রুটি ছিল, @ গিলিজ থেকে ভাল উত্তর দিয়ে সমাধান করা হয়নি। ইনপুট ফাইলটি আরও কাছাকাছি খুঁজছি, আমি শেষে 2 টি নতুন লাইন পেয়েছি। এগুলি ব্যতীত, সাফল্যের প্রয়োজন কেবল: গ্রেপ -i ফাইল_প্যাটার_ইনপুট ফাইল

(জিএনইউ গ্রেপ ৩.১, ইনপুট ফাইলের বেশি 5000 রেকর্ড, মেলানো / প্যাটার্ন ফাইল 2536, আমি জানতাম সমস্ত 2536 ফাইলটিতে থাকতে হবে।


1
এটি ওপির সমস্যার সাথে সম্পর্কিত নয়। একটি খালি রেখাটি খালি প্যাটার্ন হিসাবে গ্রেপ দ্বারা পঠিত হয় এবং খালি প্যাটার্নটি সর্বত্র মেলে।
মুরু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.