গ্রেপ কীভাবে মিলে যাওয়া ফাইলের প্রদর্শন দমন করবেন?


11

আমি একটি নির্দিষ্ট শব্দ ব্যবহার করে ফাইলগুলি সন্ধান করার চেষ্টা করছি grep। ডিরেক্টরিতে অনেকগুলি ফাইল রয়েছে (> 500)

কমান্ড আমি চালাচ্ছি

$ grep 'delete' *

আউটপুট

validate_data_stage1:0
validate_data_stage2:0
validate_data_stage3:0
validate_data_stage4:0
validate_data_stage5:0
validate_input_stage1:0
validate_input_stage2:0
validate_input_stage3:0
validate_input_stage4:0
.... and hundred of such lines

এগুলি সেই ফাইল যা প্রদত্ত ম্যাচটি ধারণ করে না। আমি স্টাডাউট প্রদর্শিত থেকে এই লাইন দমন করতে চাই। আমি -qসুইচ জানি , কিন্তু এটি সম্পূর্ণ আউটপুটকে দমন করবে, যা আমি চাই না।

আমি কেমন করে ঐটি করি?


2
সাধারণত, grepমিলে যাওয়া ফাইলগুলির ফাইলের নাম মুদ্রণ করা উচিত নয়। প্রকৃতপক্ষে, দেখে মনে হচ্ছে grepএটি সামগ্রীর সাথে একটি লাইন 0মেলাতে বিবেচনা করে। আপনি যে সঠিক অনুসন্ধান প্যাটার্নটি ব্যবহার করছেন তা কি পোস্ট করতে পারেন?
অ্যাড্রিয়ান হাইন

আমি সম্পূর্ণ গ্রিপ সেন্টিমিডিটি ব্যবহার করেছি grep 'delete' * -R, তবে আমি মনে করি না যে -Rকোনও সমস্যা হয়েছে। এবং হ্যাঁ, এটি সাধারণত মেলে না এমনগুলি মুদ্রণ করে না, তবে এখানে কী হয়েছে তা নিশ্চিত নয় ...
এমটিকে

@ পদক্ষেপ @ প্রত্যেকটি .. অদ্ভুত ... উপরের সম্পাদিত পোস্টটি দেখার পরে। আমি চেষ্টা করেছি grep -- 'delete' *(যুক্ত --) এবং এটি প্রত্যাশা অনুযায়ী কাজ করেছে। --শীর্ষস্থানীয় অপসারণ উপরের প্রদর্শনের দিকে পরিচালিত করে।
এমটিকে

1
পছন্দ করেছেন আমি দির সন্ধান করেছি ... এবং নাম সহ একটি ফাইল ছিল -ci। সমস্যা সমাধানের জন্য ধন্যবাদ। আপনি এই দৃশ্যটিকে উত্তর হিসাবে পোস্ট করতে পারেন।
এমটিকে

উত্তর:


9

এটি আচরণ দ্বারা প্রদর্শিত হয় grep -c

সম্ভবত আপনার একটি ফাইল রয়েছে যার নাম দিয়ে শুরু হয় -এবং একটি cঅক্ষর থাকে এবং আপনি POSIXLY_CORRECTপরিবেশের পরিবর্তনশীল সেট না করেই আপনি GNU গ্রেপ ব্যবহার করছেন ।

ব্যবহার করুন:

grep -- delete *

বা আরও ভাল:

grep delete ./*

--বিকল্পগুলির শেষ চিহ্নিত করে যাতে ফাইলের নামটি কোনও বিকল্প হিসাবে বিবেচনা করা হবে না (একটি পসিক্স গ্রেপ সহ, এটি অ-বিকল্প deleteযুক্তিটি বিকল্পগুলির শেষ চিহ্নিত করে না) তবে এটি সমস্যার সমাধান করবে না একটি ফাইল বলা হয় -grep delete ./*আরো জোরালো হয় এবং কিছু অতিরিক্ত outputting এর অপূর্ণতা আছে ./ম্যাচিং ফাইলের জন্য (যে যদিও একটি বোনাস বিবেচনা করা হতে পারে যে যেহেতু ফাইলের নাম যে সম্পর্কে newline অক্ষর চিহ্নিত করতে সাহায্য করে)।


12

যোগ

| grep -v ':0$'

খুব মার্জিত নয় তবে আমি মনে করি কাজটি করবে।

-lআপনার কমান্ডে যুক্ত করা আপনাকে কেবল মিল দেবে তবে এটি প্রতিটি ফাইলের জন্য মুদ্রণের সংখ্যাও দমন করবে।


1
-lকাজ করছে. কাজের চারপাশও ভাল। ধন্যবাদ
এমটিকে

4
গ্রেপ লাইনটি grep -v ':0$'কেবলমাত্র একটি লাইনের শেষে থাকা grep -l
লোকগুলির সাথেই

9

grep -lআপনি ব্যবহার করে কেবলমাত্র সেই ফাইলগুলি পাবেন যা অন্তত একটি মিল থাকে।

মোটামুটি একটি ফাইলের মধ্যে কতগুলি ম্যাচ আছে সে সম্পর্কে আপনার কি তথ্য দরকার? কারণ আপনি -cযেটি ব্যবহার করে কোনও ফাইলের মিলগুলির সংখ্যা গণনা করতে ব্যবহার করতে পারেন ip

সম্পাদনা করুন: এবং ওয়ারলক যেমন বলেছেন যে -Iবাইনারি ফাইলগুলিতে ম্যাচগুলি দমন করার জন্য ব্যবহার করা ভাল ধারণাও হতে পারে।


0

ননজারো গণনাগুলি কীভাবে গ্রেপ করবেন:

grep -rIcH 'string' . | grep -v ':0$'

  • -r পুনর্নির্দেশের উপ-ডিরেক্টরিগুলি।
  • -Iবাইনারি ফাইলগুলি উপেক্ষা করুন (ধন্যবাদ @ টংপু , যুদ্ধজাহক)
  • -cম্যাচের গণনা দেখান। বিরক্তিকরভাবে, 0-গণনা ফাইল অন্তর্ভুক্ত।
  • -H কেবলমাত্র একটি ফাইল থাকলেও ফাইলের নাম দেখান।
  • 'string' আপনার স্ট্রিং এখানে যায়।
  • . বর্তমান ডিরেক্টরি থেকে শুরু করুন।
  • | -v ':0$'0-গণনা ফাইলগুলি সরান। (ধন্যবাদ @ লরেন্তিউরয়েস্কু )

(আমি বুঝতে পারি যে ওপি অনাকাক্সিক্ষত গণনা ছিল, তবে গুগল (গ্রেপ ননজারো গণনা) এখানে অবতরণ করেছে))


0

লরেন্টিয়ুর জবাবের অনুরূপ, আপনি -lগ্রেপের জন্য ফাইল ইনপুট হিসাবে তালিকাটিও ব্যবহার করতে পারেন :
grep -r "pattern" -c $(grep -rl "pattern")
এটি গ্রেপের রঙিন রাখার অনুমতি দেয় তবে পটভূমিতে একই জিনিস করে


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