বিড়াল * | কিছু গ্রেপ… ফলাফল কোন ফাইলের?


8

যদি কোনটি নিম্নলিখিত কমান্ডটি চালায়

cat * | grep DATABASE

শেলটি * ফাইলগুলিতে সমস্ত লাইন ছড়িয়ে দেবে যার মধ্যে শব্দটি DATABASEরয়েছে। প্রতিটি লাইন কোন ফাইলের বাইরে পৃথক রয়েছে তাও ছড়িয়ে দেওয়ার কোনও উপায় আছে?

আমি ব্যবহার করার চেষ্টা -Hযা অনুযায়ী, grep জন্য বিকল্প manবলছেন print the filename for each matchকিন্তু আমার শেল এটা ঠিক বলেছেন

(standard input):$DATABASE_FUNCTION = dothis();

ভাল প্রশ্ন. আমি এখনও বিড়ালটি ভাঙার চেষ্টা করছি -> গ্রেপ অভ্যাস নিজেই। :)
সিরেক্স

উত্তর:


22

তার জন্য বিড়াল ব্যবহার করবেন না। পরিবর্তে ব্যবহার করুন grep DATABASE *বা grep -n DATABASE *(আপনি যদি ফাইলের নামগুলির পাশাপাশি লাইন নম্বরগুলি জানতে চান) সরাসরি ব্যবহার করুন।

বিড়ালের অকেজো ব্যবহার দেখুন ।

আরও কিছুটা স্পষ্ট করার জন্য: cat *পাইপটি দিয়ে গ্রাইপ খাওয়ানোর জন্য প্রকৃতপক্ষে সমস্ত ফাইলকে একত্রিত করে, তাই কোন ফাইলটি কোন ফাইলের অন্তর্ভুক্ত তা গ্রেপের কাছে কোনও উপায় নেই, এবং প্রকৃতপক্ষে এটিও জানতে পারে না যে এটি ফাইলগুলি স্ক্যান করছে বা আপনি শুধু শক্তিশালী দ্রুত টাইপ করা। আপনি একবার পাইপ ব্যবহার করার পরে এটি সমস্ত বড় স্ট্যান্ডার্ড ইনপুট স্ট্রিম।

শেষ পর্যন্ত, -Hগ্রাইপ অনুসন্ধানের জন্য একাধিক ফাইল পেলে ডিফল্টরূপে ফাইলের নাম মুদ্রণ করায় এটি প্রায় নিশ্চিতভাবেই অনর্থক। আপনি যদি আউটপুটটি বিশ্লেষণ করতে চান তবে এটি কিছুটা কার্যকর হতে পারে, যদিও কিছু সম্ভাবনা রয়েছে যেহেতু *গ্লোব একটি ফাইলে প্রসারিত হবে এবং গ্রেপ সেই ক্ষেত্রে ফাইলের নাম বাদ দেবে।


6

ব্যবহার করুন grep -H DATABASE *(দ্রষ্টব্য: ডিরেক্টরিতে যদি একাধিক ফাইল থাকে তবে -Hএটি বিকল্প।

আপনার যে সমস্যাটি হচ্ছে তা হ'ল আপনার কমান্ডের সাহায্যে, cat *সমস্ত ফাইলকে একসাথে একটি বড় জগাখিচুড়ে তৈরি করে এবং তারপরে |স্ট্যান্ডার্ড ইনপুটটিতে প্রেরণ করে grep DATABASE। গ্রেপ ডেটা দেখার সময়, এটি কোথা থেকে এসেছে সে সম্পর্কে তথ্য হারিয়ে গেছে। সমাধানটি হ'ল গ্রাইপকে পৃথক ফাইলগুলির সন্ধানের কাজটি করতে হয়, সুতরাং এটি যখন কোনও মিল খুঁজে পায় তখন তা জানে যে এটি কোন ফাইল থেকে এসেছে।

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