اگر با ترمینال لینوکس کار کرده باشید احتمالا به دستور grep برخورد کردید، حالا قصد داریم تا کمی بیشتر با این دستور آشنا شیم.
این دستور مخفف کلمات Global Regular Expression Print است که کارش جستجوی یک عبارت و یا الگو بین فایل یا فایلهایی (یا رشتهها) میباشد.
این دستور به طور کلی از ۳ بخش تشکیل شده است:
بخش اول : دستور grep
بخش دوم: عبارت یا الگویی که قصد جستجوی آن را داریم
و بخش سوم نام فایل یا فایلهایی که میخواهیم در آنها به جستجو بپردازیم.
grep linxu sample.txt
این دستور به دنبال کلمهی linxu در فایل sample.txt میگردد و در صورتی که موجود باشد تمام خطی که شامل این کلمه بوده است را برمیگرداند.
برای این که همین کلمه را بین چند فایل جستجو کنیم کافی است که نام فایل ها را با space از هم جدا کنیم :
grep linux sample1.txt sample2.txt sample3.txt
و مجدد اگر این کلمه در هرکدام از این فایل ها که باشد این بار علاوه بر این که خطی که شامل این کلمه بوده چاپ میشود نام فایل هم در ابتدا چاپ میشود
گاهی اوقات نیاز داریم که بین تمام فایلهای موجود در یک دایرکتوری جستجو کنیم برای این کار به جای نام فایل از * استفاده میکنیم:
grep linux *
در ضمن میتوانیم تعیین کنیم که این جستجو به صورت تو در تو انجام شود، برای اینکار از آپشن r استفاده میکنیم
grep -r linux *
اگر بخواهیم که جستجوی خود را محدود به کلمه کنیم از آپشن w استفاده میکنیم که در اینصورت خطوطی چاپ خواهند شد که دقیقا همین عبارت در آنها باشد (بدون این آپشن اگر عبارت بخشی از یک رشته هم باشد چاپ خواهد شد)
grep -w linux *
به طور پیشفرض دستور grep به کوچک یا بزرگ بودن حروف حساس است اما اگر بخواهیم این حساسیت کنار گذاشته شود میتوانیم از آپشن i استفاده کنیم
grep -i linux *
که در اینصورت اگر خطی شامل LINUX هم باشد در خروجی چاپ خواهد شد.
برای نمایش نام فایلهایی که الگوی مورد نظر در آنها منطبق شده است از آپشن l استفاده میکنیم
grep -l linux *
برای شمارش تعداد موارد منطبق شده در هر فایل از آپشن c استفاده میشود
grep -c linux *
اگر بخواهیم شماره ی خطی که الگوی مورد نظر در آن پیدا شده در خروجی چاپ شود از دستور n استفاده میکنیم.
grep -n linux sample.txt
میتوانیم با استفاده از آپشن A تعداد خطوط بعد از انطباق و با استفاده از آپشن B تعداد خطوط قبل از انطباق و با استفاده از C تعداد خطوط قبل و بعد انطباق را هم در خروجی چاپ کنیم:
grep -n -C 3 linux sample.txt
با اجرای دستور بالا ۳ خط از قبل و ۳ خط از بعد انطباقها چاپ خواهد شد.
شما دیگه چه آپشنهایی میشناسید؟ اونها رو کامنت کنید تا ما هم بدونیم...