خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


آموزش نحوه استفاده از دستور grep در لینوکس

آموزش نحوه استفاده از دستور grep در لینوکس
دستور grep مخفف عبارت global regular expression print است و یکی از قدرتمندترین و رایج‌ترین دستورات در لینوکس است. grep یک یا چند فایل به عنون ورودی برای خطوطی که با یک الگوی مشخص مطابقت دارند جستجو می کند و اگر چیزی مطابق با آن خط پیدا کرد، در خروجی نشان می دهد یا به عبارت دیگر Grep یک ابزار خط فرمان لینوکس / یونیکس است که برای جستجوی رشته ای از کاراکترها در یک فایل مشخص استفاده می شود. الگوی جستجوی متن regular expression نام دارد. دستور grep هنگام جستجو در فایل‌های گزارش بزرگ مفید است.

سیستم یکپارچۀ سازمانی راهکار
در این مقاله، نحوه استفاده از دستور grep را با کمک مثال های مختلف نمایش خواهیم داد. دستور grep در ابتدایی ترین و ساده ترین شکل خود از سه قسمت تشکیل شده است. قسمت اول با دستور grep شروع می شود و به دنبال آن الگوی مورد جستجوی شما قرار می گیرد. بعد از رشته، نام فایلی می آید که grep در آن جستجو می کند.


ساده ترین دستور دستور grep به شکل زیر است:

آموزش نحوه استفاده از دستور grep در لینوکس
این دستور می تواند شامل بسیاری از گزینه ها، تغییرات الگو یا pattern و نام فایل ها باشد. هر تعداد گزینه را که لازم است ترکیب کنید تا به نتایج مورد نیاز خود برسیددر ادامه رایج ترین مثال های دستور grep را به شما دوستان نشان خواهیم داد.


توجه: Grep به حروف بزرگ و کوچک حساس است. هنگام اجرای دستورات grep حتما از حروف درست استفاده کنید.


برای پرینت هر خطی از فایلی که دارای الگوی خاصی از کاراکترها است، در مورد ما phoenix در فایل sample2، دستور را اجرا کنید. البته شما باید الگوی کاراکتر خودتان را جایگزین کنید:

grep phoenix sample2

Grep هر خطی را کلمه phoenix را در خود دارد نمایش می دهد. هنگام اجرای این دستور، مطابقت دقیقی دریافت نمی کنید. در عوض، ترمینال خطوط را با کلمات حاوی رشته کاراکترهایی که وارد کرده اید چاپ می کند. به عنوان مثال:

آموزش نحوه استفاده از دستور grep در لینوکس
یعنی phoenix چه بصورت یک کلمه مجزا و چه در لابلای کلمات گنجانده شده باشد، آن را بر می گرداند.


نکته: اگر الگوی جستجوی شما دارای کاراکترهایی غیر از عدد است، از علامت نقل قول استفاده کنید که شامل فضاهای خالی یا هر چیز دیگری است.


برای جستجوی چندین فایل با دستور grep، نام فایل‌هایی را که می‌خواهید در آنها سرچ انجام دهید را با فاصله یا space از هم جدا کنید. در این مثال، دستور grep برای سرچ کلمه phoenix در سه فایل sample، sample2 و sample3 باید بصورت زیر دستور را وارد کنید:

grep phoenix sample sample2 sample3

ترمینال نام هر فایلی که حاوی خطوط منطبق باشد و خطوط واقعی که شامل رشته مورد نیاز از کاراکترها است را نمایش می دهد.

آموزش نحوه استفاده از دستور grep در لینوکس
به هر تعداد که فایل داشته باشید می توانید به دستور اضافه کنید. تریمنال هر تطبیقی که در فایل های شما پیدا کند، در خروجی بصورت یک خط مجزا نشان می دهد.

Search All Files in Directory by grep command

برای جستجوی همه فایل‌ها در دایرکتوری جاری، به جای نام فایل در انتهای دستور grep از یک ستاره استفاده کنید. در این مثال از nix به عنوان شرط سرچ خودمان استفاده می کنیم:

grep nix *

در مثال اول، ما از الگوی phoenix برای سرچ در فایل یا فایل ها استفاده کردیم و دیدیم که phoenix چه بصورت یگک کلمه مجزا و چه در لابلای کلمات موجود بود، در خروجی نمایش داده شد. حالا دستور را می خواهیم طوری بنویسیم که اگر کلمه مورد نظر ما بصورت مجزا وجود داشت، آن را نمایش دهد. مثلا اگر phoenix بصورت یک کلمه مجزا در فایل وجود داشت، نشان دهد. برای جستجوی کلمه phoenix در تمام فایل های دایرکتوری جاری، w- را به دستور grep اضافه کنید.

grep -w phoenix *

آموزش نحوه استفاده از دستور grep در لینوکس
این گزینه فقط خطوطی را با تطابق کامل کلمه و نام فایل هایی که کلمه را در آنها پیدا کرده را نمایش می دهد.
همانطور که بالاتر گفتیم، دستور grep یک دستور case sensitive بوده و حساس به حروف بزرگ و کوچک است. ولی چگونه این حساسیت دستور grep را می توانیم از بین بریم؟ برای این منظور باید از سوئیچ i- استفاده کنید. لطفا به مثال زیر توجه کنید:

grep -i phoenix *

آموزش نحوه استفاده از دستور grep در لینوکس
برای گنجاندن همه ساب دایرکتوری ها در سرچ می توانید عملگر r- را به دستور اضافه کنید:

grep -rw phoenix *

آموزش نحوه استفاده از دستور grep در لینوکس
با این دستور همه فایل ها موجود در دایرکتوری جاری و حتی ساب دایرکتریو ها موجود در دایرکتوری جاری را بر اساس الگوی داده شده سرچ کرده و نتایج را نمایش می دهد ضمن اینکه از w- استفاده شده که فقط کلمه مستقل و مجزا را بر اساس الگوی جستجو نمایش می دهد . اما دستور فوق کماکان حساس به حروف بزرگ و کوچک است که می توانید i- را به دستور اضافه کنید تا این حساسیت نادیده گرفته شود:

grep -rwi phoenix *

پس بصورت ترکیبی هم خیلی ساده و راحت می توانید از سوئیچ ها و گزینه ها استفاده کرد.
می توانید از grep برای نمایش تمام خطوطی که با الگوی خاصی از کاراکترها مطابقت ندارند استفاده کنید. برای معکوس کردن جستجو، v- را به دستور grep اضافه کنید. مثلا برای Exclude کردن خطوطی که حاوی phoenix هستندف به شکل زیر از دستور استفاده کنید:

grep -vi phoenix sample

ترمینال تمام خطوطی را که حاوی کلمه مورد استفاده به عنوان معیار جستجو نیستند نمایش می دهد. ما در دستور از i- هم استفاده کرده ایم که توضیحات آن را بالاتر دادیم:

آموزش نحوه استفاده از دستور grep در لینوکس
دستور grep زمانی که در یک فایل مطابقت پیدا می کند، همه خطوط را پرینت می کند. برای پرینت تنها خطوطی که کاملاً با رشته جستجو مطابقت دارند، گزینه x- را اضافه کنید.

grep -x "phoenix number3" *

اگر کلمه یا کاراکتر دیگری در همان خط وجود داشته باشد، grep آن را در نتایج جستجو لحاظ نمی کند. اگر در بین کلماتتان فاصله دارید، quotation marks را فراموش نکنید. در تصویر زیر یکبار دستور بدوم x- و یکبار همراه با x- انجام شده است و همانطور که مشاهده می کنید، نتایج متفاوت است:

آموزش نحوه استفاده از دستور grep در لینوکس
بعضا، شما فقط باید نام فایل هایی را پیدا کنید که حاوی کلمه یا رشته ای از کاراکترها هستند. برای پرینت فقط نام فایل هایی که با جستجوی شما مطابقت دارند، از عملگر l- استفاده کنید:

grep -l phoenix *

آموزش نحوه استفاده از دستور grep در لینوکس
Grep می تواند نام فایل ها و تعداد خطوط را در جایی که برای کلمه شما مطابقت پیدا می کند نمایش دهد. از عملگر c- برای شمارش تعداد تطابق استفاده کنید:

grep -c phoenix *

آموزش نحوه استفاده از دستور grep در لینوکس
حالا به مثال های دیگری که می زنیم توجه کنید:

grep -A 3 phoenix sample

در دستور فوق، 3 خط بعد از آنجایی که با الگوی سرچ مطابقت دارد را نمایش می دهد و البته تعداد خط ها را می توانید تغییر دهید.

grep -B 2 phoenix sample

در دستور فوق، 2 خط قبل از آنجایی که با الگوی سرچ مطابقت دارد را نمایش می دهد و البته تعداد خط ها را می توانید تغییر دهید.

grep -C 2 phoenix sample

توجه داشته باشید که سوئیچ C- بزرگ است. در دستور فوق، 2 خط قبل و بعد، از آنجایی که با الگوی سرچ مطابقت دارد را نمایش می دهد و البته تعداد خط ها را می توانید تغییر دهید.
هنگامی که grep نتایج را با تعداد زیادی تطابق نمایش می دهد، نمایش شماره خطوط هم می توانید بسیار مفید باشد. برای نمایش شماره خط، عملگر n- را به هر دستور grep اضافه کنید. ما Phoenix را در دایرکتوری جاری سرچ می کنیم، دو خط قبل و بعد از تطابق را به همراه شماره خطوط آنها نشان می دهیم.

grep -n -C 2 Phoenix sample

آموزش نحوه استفاده از دستور grep در لینوکس
فایل‌های مجزا، مانند فایل‌های لاگ، می‌توانند دارای تطبیق‌های زیادی برای الگوهای جستجوی grep باشند. با افزودن گزینه m- و یک عدد به دستور، تعداد خطوط خروجی grep را محدود کنید.

grep -m2 Phoenix sample
خب، در این مقاله تمام تلاش بر این بود که شما را تا حد امکان با شیوه به کار گیری دستور grep در لینوکس آشنا کنیم که امیدواریم از آموزش لذت برده باشید. اگر شما دوستان عزیز هم نکته دیگری در خصوص این دستور دارید، لطفا آن را در قسمت ثبت نظرات و دیدگاه ها با ما و سایر دوستان تان به اشتراک قرار دهید.

نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز