man grepপৃষ্ঠাটি থেকে (ডেবিয়ানে):
বর্ণনা
grep searches the named input FILEs (or standard input if no files are
named, or if a single hyphen-minus (-) is given as file name) for lines
containing a match to the given PATTERN. By default, grep prints the
matching lines.
প্রথম ক্ষেত্রে, grepফাইলটি খোলে; দ্বিতীয়টিতে, শেলটি ফাইলটি খোলে এবং এর স্ট্যান্ডার্ড ইনপুটকে নির্ধারিত করে grep, এবং grepকোনও ফাইল নাম যুক্তি পাস না করে ধরে নেওয়া হয় যে এটির স্ট্যান্ডার্ড ইনপুটটি গ্রেপ করা দরকার।
1 এর পেশাদার:
grep একাধিক ফাইল গ্রেপ করতে পারে¹
grepফাইলের নাম প্রদর্শন করতে পারে যেখানে প্রতিটি ঘটনা lineখুঁজে পাওয়া যায়।
2 এর পেশাদার:
- যদি ফাইলটি খোলা না যায়, শেলটি একটি ত্রুটি ফেরায় যা আরও প্রাসঙ্গিক তথ্য (যেমন স্ক্রিপ্টের লাইন নম্বর) এবং আরও সুসংগত উপায়ে (যদি আপনি শেলটিকে অন্য কমান্ডের জন্য ফাইলগুলিও খুলতে দেয়) এর চেয়ে বেশি থাকে
grepএটি খোলে এবং যদি ফাইলটি খুলতে না পারে, grepএমনকি তাকে বলা হয় না (যা কিছু আদেশের জন্য - সম্ভবত না grep- এটি একটি বড় পার্থক্য আনতে পারে )।
- ইন
grep line < in > out, যদি inনা খোলা যায় outতবে তৈরি করা হবে না বা কেটে যাবে।
- অস্বাভাবিক নাম (যেমন
-বা ফাইলের নাম দিয়ে শুরু হওয়া -) with দিয়ে কিছু ফাইল নিয়ে কোনও সমস্যা নেই ²
- প্রসাধনী: আপনি
<fileকমান্ড-লাইনে আরও স্বাভাবিকভাবে কমান্ড প্রবাহকে আরও স্বাভাবিকভাবে দেখানোর জন্য রাখতে <in grep line >outপারেন, আপনি যদি পছন্দ করেন তবে prefer
প্রসাধনী: GNU এর সাহায্যে grep, কেবল ফাইলের নামের পরিবর্তে ম্যাচের লাইনের সামনে কী লেবেলটি ব্যবহার করতে হবে তা চয়ন করতে পারেন:
<file grep --label='Found in file at line' -Hn line
পারফরম্যান্সের ক্ষেত্রে, ফাইলটি যদি না খোলতে পারে তবে আপনি grepপুনর্নির্দেশটি ব্যবহার করার সময় সম্পাদনটি সংরক্ষণ করেন , তবে অন্যথায় grepআমি খুব বেশি পার্থক্য আশা করি না।
পুনঃনির্দেশের সাহায্যে, আপনি অতিরিক্ত তর্কটি পাস করতে বাঁচান grep, আপনি grepযুক্তিটি কিছুটা সহজ করে ফেলছেন। অন্যদিকে, শেলটির dup2()জন্য ফাইল বর্ণনাকারী 0-তে ফাইল বর্ণনাকারীতে একটি অতিরিক্ত সিস্টেম কল প্রয়োজন (কমপক্ষে) ।
ইন { grep -m1 line; next command; } < file, grep(এখানে জিএনইউ grep) seek()মেলানো লাইনের ঠিক পরে ফিরে যেতে চাইবে যাতে next commandফাইলটি বাকী দেখায় (ফাইলটি সন্ধানযোগ্য কিনা তাও এটি নির্ধারণ করতে হবে)। অন্য কথায়, স্টিডিনের মধ্যে অবস্থান হ'ল আউটপুটগুলির মধ্যে একটি grep। এর সাথে grep -m1 line fileএটি এটিকে অপ্টিমাইজ করতে পারে, এটি grepযত্ন নেওয়ার জন্য কম কাজ ।
নোট
¹ এর সাথে zsh, আপনি এটি করতে পারেন:
grep line < file1 < file2
তবে এটি cat file1 file2 | grep line( catইউটিলিটিটি না জানিয়ে ) সমপরিমাণটি করছে এবং তাই কম দক্ষ, যদি প্রথম ফাইলটি একটি নতুন লাইন চরিত্রের মধ্যে শেষ না হয় এবং কোন ফাইলটিতে প্যাটার্নটি পাওয়া যায় তা আপনাকে অবহিত করতে না পারে সেজন্য বিভ্রান্তি সৃষ্টি করতে পারে।
² এর ক্ষেত্রে ksh93এবং bashযদিও, মত ফাইল /dev/tcp/host/port(এবং /dev/fd/xকিছু সিস্টেমে bash) যা, যখন পুনঃনির্দেশগুলি লক্ষ্য ব্যবহৃত পরিবর্তে সত্যিই ফাইল সিস্টেমে ফাইল খোলার বিশেষ উদ্দেশ্যের জন্য শেল বিবৃতি (যদিও সাধারণত, ঐ ফাইল ফাইল সিস্টেমে উপস্থিত নেই)। স্বীকৃত /dev/stdinহিসাবে একই উদ্দেশ্যে কাজ -করে grep, তবে কমপক্ষে, এখানে এটি আরও সঠিকভাবে নাম স্পেস ( -যেকোনও ডিরেক্টরিতে ডাকা একটি ফাইল তৈরি করতে পারে , যখন কেবল প্রশাসকরা একটি ফাইল নামক ফাইল তৈরি করতে পারে /dev/tcp/host/portএবং প্রশাসকদের আরও ভাল জানা উচিত)।