গ্রেপ থেকে প্রাপ্ত ফলাফলের সংখ্যাটি কীভাবে সীমাবদ্ধ করব?


180

আমি গ্রেপ থেকে 10 লাইন সর্বোচ্চ বলতে চাই।

আমি চাই না আমার কম্পিউটারটি কঠোর পরিশ্রম করবে। গ্রেপ দ্বারা প্রাপ্ত 10 টি ফলাফলের পরে এটি বন্ধ হয়ে যেতে চাই। এটা কি সম্ভব?


আপনার ক্ষেত্রে আপনি কম্পিউটারটি কঠোর পরিশ্রম করতে চান না .. তবে এটি যদি কেবল মানুষের পাঠযোগ্যতার সমস্যা হয় তবে আপনি lessপাইপের মাধ্যমে ব্যবহার করতে পারেন । এটি স্ক্রিনটি পূরণ করবে এবং আপনি আরও লাইন দেখতে এবং qপ্রস্থান করতে ENTER টিপুন :grep "SomeText" somefile.csv | less
সাইলেন্টস্টিল

উত্তর:


240

-mবিকল্প সম্ভবত আপনি যা খুঁজছেন তা হল:

grep -m 10 PATTERN [FILE]

থেকে man grep:

-m NUM, --max-count=NUM
        Stop reading a file after NUM matching lines.  If the  input  is
        standard  input  from a regular file, and NUM matching lines are
        output, grep ensures that the standard input  is  positioned  to
        just  after the last matching line before exiting, regardless of
        the presence of trailing context lines.  This enables a  calling
        process  to resume a search.

দ্রষ্টব্য: নির্দিষ্ট সংখ্যক ম্যাচের সন্ধান পাওয়া গেলে গ্রেপ ফাইলটি পড়া বন্ধ করে দেয়!


3
হাই এটি এটিকে এটি চেষ্টা করে যা এটি মূলত কাজ করে তবে মনে হয় না যে গ্রেপ "থামিয়ে" ভাবছে প্রথম 10 লাইন দেখে মনে হচ্ছে সে মনে করে যে তিনি ভাবছেন এবং "আমার সিপিইউ ব্যবহার করছেন" এবং কেবল প্রিন্ট নয় এটি কি সংশোধন? thansk
যাকোব

6
@ জেসন: এটি এমনটি বলে মনে হচ্ছে না: গ্রেপ -m 1আমার ল্যাপটপে 10 মিলিয়ন লাইন নিয়ে কোনও ফাইল ছাড়াই 0.005 এবং 1.579 সেকেন্ড নেয় ।
গ্রাগোয়ার

3
পাইপিং tailসাধারণত কাজ করে চলেছে, তবে বিশেষত যদি আপনি প্রসঙ্গের সাথে ঝাঁপিয়ে পড়ে থাকেন তবে উদাহরণস্বরূপ grep -A10 PATTERN, tailফলাফলের সংখ্যার পরিবর্তে প্রসঙ্গটি কেটে নেওয়া হয়। এই উত্তরটি আমি যা খুঁজছিলাম was
ডিমো 414

1
-m 10একাধিক ফাইল গ্রেপ করার সময় এই বিকল্পটি কী পার্থক্য তৈরি করে! প্রথম ফাইলে যদি খুব বেশি ম্যাচ হয় তবে পাইপ টু মাথা চালানো পরবর্তী ফাইলগুলিতে ম্যাচগুলি দেখায় না। ধন্যবাদ!
জুলিয়েন

1
আইএমএইচও এটি গ্রহণযোগ্য উত্তর হিসাবে চিহ্নিত করা উচিত, কারণ এটি অন্য সরঞ্জাম প্রয়োজন হয় না। বিটিডাব্লু - ম্যাক্স-কাউন্টের শর্টকাট জেনেও এই অপশনটি মনে রাখা সহজ
ইসহাক

68

অন্য বিকল্পটি কেবল মাথা ব্যবহার করে :

grep ...parameters... yourfile | head

এটির জন্য পুরো ফাইলটি অনুসন্ধানের প্রয়োজন হবে না - প্রথম দশটি ম্যাচের লাইন পাওয়া গেলে এটি থামবে। এই পদ্ধতির সাথে আরেকটি সুবিধা হ'ল আপনি যদি -o বিকল্পের সাথে গ্রেপ ব্যবহার করে থাকেন তবে 10 টিরও বেশি লাইন ফিরে আসবে না।

উদাহরণস্বরূপ যদি ফাইলটিতে নিম্নলিখিত লাইন থাকে:

112233
223344
123123

তারপরে আউটপুটটিতে এটি পার্থক্য:

p গ্রেপ -ও '১' yourfile | মাথা -n2
11
12

$ গ্রেপ-এম 2 -ও '1.'
11
12
12

headপ্রত্যাশিত হিসাবে মাত্র 2 টি ফলাফল ব্যবহার করা হয় , যেখানে এম -2 3 প্রদান করে।


3
মনে রাখবেন আপনি ব্যবহার করতে পারবেন না | headপাইপ ব্যবহার করে যখন grepসঙ্গে -Aবা -B(এবং এইভাবে না শুধুমাত্র ফলাফলের জন্য অনুসন্ধানের ( -oপাশাপাশি), কিন্তু প্রসঙ্গ জন্য)। -mসেক্ষেত্রে ফলাফলগুলি ফেরতের সাথে রেখার সংখ্যা গ্রেপ করতে বলার জন্য আপনার বাকী রয়েছে ।
আটটিলা ও

17
মাথা ব্যবহার করা আসলে পুরো ফাইলটি চালানো থেকে গ্রেপকে থামায় না। গ্রেপ মধ্যে -m বিকল্প ব্যবহার করে।
লোপসাই

7

জাগ্রত পদ্ধতি:

awk '/pattern/{print; count++; if (count==10) exit}' file

0

লেজ ব্যবহার:

#dmesg 
...
...
...
[132059.017752] cfg80211:   (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
[132116.566238] cfg80211: Calling CRDA to update world regulatory domain
[132116.568939] cfg80211: World regulatory domain updated:
[132116.568942] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[132116.568944] cfg80211:   (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132116.568945] cfg80211:   (2457000 KHz - 2482000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132116.568947] cfg80211:   (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm)
[132116.568948] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132116.568949] cfg80211:   (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm)
[132120.288218] cfg80211: Calling CRDA for country: GB
[132120.291143] cfg80211: Regulatory domain changed to country: GB
[132120.291146] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[132120.291148] cfg80211:   (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291150] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291152] cfg80211:   (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291153] cfg80211:   (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211:   (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | head 2
head: cannot open 2 for reading: No such file or directory
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | tail -2
[132120.291153] cfg80211:   (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211:   (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | tail -5
[132120.291148] cfg80211:   (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291150] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291152] cfg80211:   (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291153] cfg80211:   (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211:   (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$ dmesg | grep cfg8021 | tail -6
[132120.291146] cfg80211:   (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp)
[132120.291148] cfg80211:   (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291150] cfg80211:   (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291152] cfg80211:   (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm)
[132120.291153] cfg80211:   (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm)
[132120.291155] cfg80211:   (57240000 KHz - 65880000 KHz @ 2160000 KHz), (N/A, 4000 mBm)
alex@ubuntu:~/bugs/navencrypt/dev-tools$ 

আপনি সম্পাদকে "format}" এর মতো আইকনটি ক্লিক করে "কোড বিন্যাসকরণ" সেট করতে পারেন।
পিটারহ - মনিকা পুনরায় ইনস্টল করুন

এটা loooonl loooog liiines চেয়ে বেশি পাঠযোগ্য উদাহরণ প্রদান উপযোগী হতে চাই
Putnik

0

2 ব্যবহারের ক্ষেত্রে:

  1. আমি কেবল এন সামগ্রিক ফলাফল চাই, প্রতি ফাইলের জন্য এন ফলাফল নয়, grep -m 2প্রতি ফাইল সর্বাধিক উপস্থিতি।
  2. আমি প্রায়শই ব্যবহার করি git grepযা গ্রহণ করে না-m

এই পরিস্থিতিতে একটি ভাল বিকল্প grep | sed 2qসমস্ত ফাইল জুড়ে প্রথম 2 ঘটনা গ্রেপ হয়। এসডি ডকুমেন্টেশন: https://www.gnu.org/software/sed/manual/sed.html

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