ag (the_silver_searcher) পুরো ফাইলটি অনুসন্ধান করছে না - এটি একটি নিখরচায় সর্বাধিক ইনপুট আকার আছে?


3

আমার একটি খুব বড় প্লেইন টেক্সট ফাইল (আকারে একাধিক গিগাবাইট) যা আমাকে নির্দিষ্ট স্ট্রিংগুলির জন্য অনুসন্ধান করতে হবে। ব্যবহার করার সময় grep, আমি একটি স্ট্রিং সঙ্গে 11,000 ম্যাচ কিন্তু সঙ্গে পেতে ag আমি প্রায় 1,500 পেতে। দুটি কমান্ডের আউটপুট পয়েন্ট পর্যন্ত একই ag স্টপ।

আমি সচেতন -m বিকল্প ag সর্বোচ্চ সংখ্যক ম্যাচ সংজ্ঞায়িত করে তবে এটি ডিফল্ট 10,000 এবং এভাবেই সমস্যা হয় না।

এটি ব্যাখ্যা করার জন্য, কী ঘটছে তার একটি উদাহরণ এখানে দেওয়া হল:

$ grep -i 'string' hugefile.txt | wc -l
    11000
$ ag -i 'string' hugefile.txt | wc -l
    1500

দুটি কমান্ডের আউটপুট একই মিলগুলির সমান।

$ grep -m 1500 -i 'string' hugefile.txt > grep_output.txt
$ ag --no-numbers -i 'string' hugefile.txt > ag_output.txt

$ diff grep_output.txt ag_output.txt

(files identical)

কি ag একটি অন্তর্বর্তী সর্বাধিক ইনপুট আকার আছে এবং যদি তাই হয়, এটা এই পরিবর্তন করা সম্ভব?


একই অবস্থা. আমার ফাইল ছাড়া শুধুমাত্র 1.5 গিগাবাইট আছে। Grep এর সাথে এটি ধীর, কিন্তু সম্পূর্ণ: /
Mailo Světel

উত্তর:


0

আপনি কি লাইন প্রতি একাধিক (গড় 6 থেকে 7) হিট ছিল?

যদি তাই হয়, তাদের গণনা করার জন্য উপরের পদ্ধতিটি ভুল: এটি শুধুমাত্র মিলগুলির সাথে লাইনগুলিকে গণনা করে তবে মিলছে না। সুতরাং যদি আপনি মিলসের সাথে 1500 লাইনের পরে ইতিমধ্যে 10000 মিলের সীমাতে পৌঁছান তবে উপরের ফলাফলটি পাবেন এবং এটি হবে ঠিক

উপরন্তু semantics grep এবং এর ag এর -m বিকল্প আলাদা বলে মনে হচ্ছে:

  • জন্য grep এটি লাইন পড়ার সর্বোচ্চ গণনা: NUM মিলে যাওয়া লাইনগুলির পরে একটি ফাইল পড়া বন্ধ করুন।
  • না হইলে ag এটি সর্বোচ্চ ম্যাচ গণনা: NUM টি মিলের পরে একটি ফাইল বাকি রাখুন।

সুতরাং আমি সন্দেহ করেছি যে আপনি ডিফল্ট সর্বাধিক সর্বোচ্চ সীমাটি আঘাত করেছেন এবং এতে মানটি বাড়ানোর দরকার আছে -m বিকল্প ag

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