خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
آموزش نحوه استفاده از دستور grep در لینوکس
دستور grep مخفف عبارت global regular expression print است و یکی از قدرتمندترین و رایجترین دستورات در لینوکس است. grep یک یا چند فایل به عنون ورودی برای خطوطی که با یک الگوی مشخص مطابقت دارند جستجو می کند و اگر چیزی مطابق با آن خط پیدا کرد، در خروجی نشان می دهد یا به عبارت دیگر Grep یک ابزار خط فرمان لینوکس / یونیکس است که برای جستجوی رشته ای از کاراکترها در یک فایل مشخص استفاده می شود. الگوی جستجوی متن regular expression نام دارد. دستور grep هنگام جستجو در فایلهای گزارش بزرگ مفید است.
در این مقاله، نحوه استفاده از دستور grep را با کمک مثال های مختلف نمایش خواهیم داد. دستور grep در ابتدایی ترین و ساده ترین شکل خود از سه قسمت تشکیل شده است. قسمت اول با دستور grep شروع می شود و به دنبال آن الگوی مورد جستجوی شما قرار می گیرد. بعد از رشته، نام فایلی می آید که grep در آن جستجو می کند.
ساده ترین دستور دستور grep به شکل زیر است:
این دستور می تواند شامل بسیاری از گزینه ها، تغییرات الگو یا pattern و نام فایل ها باشد. هر تعداد گزینه را که لازم است ترکیب کنید تا به نتایج مورد نیاز خود برسیددر ادامه رایج ترین مثال های دستور grep را به شما دوستان نشان خواهیم داد.
توجه: Grep به حروف بزرگ و کوچک حساس است. هنگام اجرای دستورات grep حتما از حروف درست استفاده کنید.
برای پرینت هر خطی از فایلی که دارای الگوی خاصی از کاراکترها است، در مورد ما phoenix در فایل sample2، دستور را اجرا کنید. البته شما باید الگوی کاراکتر خودتان را جایگزین کنید:
Grep هر خطی را کلمه phoenix را در خود دارد نمایش می دهد. هنگام اجرای این دستور، مطابقت دقیقی دریافت نمی کنید. در عوض، ترمینال خطوط را با کلمات حاوی رشته کاراکترهایی که وارد کرده اید چاپ می کند. به عنوان مثال:
یعنی phoenix چه بصورت یک کلمه مجزا و چه در لابلای کلمات گنجانده شده باشد، آن را بر می گرداند.
نکته: اگر الگوی جستجوی شما دارای کاراکترهایی غیر از عدد است، از علامت نقل قول استفاده کنید که شامل فضاهای خالی یا هر چیز دیگری است.
برای جستجوی چندین فایل با دستور grep، نام فایلهایی را که میخواهید در آنها سرچ انجام دهید را با فاصله یا space از هم جدا کنید. در این مثال، دستور grep برای سرچ کلمه phoenix در سه فایل sample، sample2 و sample3 باید بصورت زیر دستور را وارد کنید:
ترمینال نام هر فایلی که حاوی خطوط منطبق باشد و خطوط واقعی که شامل رشته مورد نیاز از کاراکترها است را نمایش می دهد.
به هر تعداد که فایل داشته باشید می توانید به دستور اضافه کنید. تریمنال هر تطبیقی که در فایل های شما پیدا کند، در خروجی بصورت یک خط مجزا نشان می دهد.
در مثال اول، ما از الگوی phoenix برای سرچ در فایل یا فایل ها استفاده کردیم و دیدیم که phoenix چه بصورت یگک کلمه مجزا و چه در لابلای کلمات موجود بود، در خروجی نمایش داده شد. حالا دستور را می خواهیم طوری بنویسیم که اگر کلمه مورد نظر ما بصورت مجزا وجود داشت، آن را نمایش دهد. مثلا اگر phoenix بصورت یک کلمه مجزا در فایل وجود داشت، نشان دهد. برای جستجوی کلمه phoenix در تمام فایل های دایرکتوری جاری، w- را به دستور grep اضافه کنید.
این گزینه فقط خطوطی را با تطابق کامل کلمه و نام فایل هایی که کلمه را در آنها پیدا کرده را نمایش می دهد.
همانطور که بالاتر گفتیم، دستور grep یک دستور case sensitive بوده و حساس به حروف بزرگ و کوچک است. ولی چگونه این حساسیت دستور grep را می توانیم از بین بریم؟ برای این منظور باید از سوئیچ i- استفاده کنید. لطفا به مثال زیر توجه کنید:
برای گنجاندن همه ساب دایرکتوری ها در سرچ می توانید عملگر r- را به دستور اضافه کنید:
با این دستور همه فایل ها موجود در دایرکتوری جاری و حتی ساب دایرکتریو ها موجود در دایرکتوری جاری را بر اساس الگوی داده شده سرچ کرده و نتایج را نمایش می دهد ضمن اینکه از w- استفاده شده که فقط کلمه مستقل و مجزا را بر اساس الگوی جستجو نمایش می دهد . اما دستور فوق کماکان حساس به حروف بزرگ و کوچک است که می توانید i- را به دستور اضافه کنید تا این حساسیت نادیده گرفته شود:
پس بصورت ترکیبی هم خیلی ساده و راحت می توانید از سوئیچ ها و گزینه ها استفاده کرد.
می توانید از grep برای نمایش تمام خطوطی که با الگوی خاصی از کاراکترها مطابقت ندارند استفاده کنید. برای معکوس کردن جستجو، v- را به دستور grep اضافه کنید. مثلا برای Exclude کردن خطوطی که حاوی phoenix هستندف به شکل زیر از دستور استفاده کنید:
ترمینال تمام خطوطی را که حاوی کلمه مورد استفاده به عنوان معیار جستجو نیستند نمایش می دهد. ما در دستور از i- هم استفاده کرده ایم که توضیحات آن را بالاتر دادیم:
دستور grep زمانی که در یک فایل مطابقت پیدا می کند، همه خطوط را پرینت می کند. برای پرینت تنها خطوطی که کاملاً با رشته جستجو مطابقت دارند، گزینه x- را اضافه کنید.
اگر کلمه یا کاراکتر دیگری در همان خط وجود داشته باشد، grep آن را در نتایج جستجو لحاظ نمی کند. اگر در بین کلماتتان فاصله دارید، quotation marks را فراموش نکنید. در تصویر زیر یکبار دستور بدوم x- و یکبار همراه با x- انجام شده است و همانطور که مشاهده می کنید، نتایج متفاوت است:
بعضا، شما فقط باید نام فایل هایی را پیدا کنید که حاوی کلمه یا رشته ای از کاراکترها هستند. برای پرینت فقط نام فایل هایی که با جستجوی شما مطابقت دارند، از عملگر l- استفاده کنید:
Grep می تواند نام فایل ها و تعداد خطوط را در جایی که برای کلمه شما مطابقت پیدا می کند نمایش دهد. از عملگر c- برای شمارش تعداد تطابق استفاده کنید:
حالا به مثال های دیگری که می زنیم توجه کنید:
در دستور فوق، 3 خط بعد از آنجایی که با الگوی سرچ مطابقت دارد را نمایش می دهد و البته تعداد خط ها را می توانید تغییر دهید.
در دستور فوق، 2 خط قبل از آنجایی که با الگوی سرچ مطابقت دارد را نمایش می دهد و البته تعداد خط ها را می توانید تغییر دهید.
توجه داشته باشید که سوئیچ C- بزرگ است. در دستور فوق، 2 خط قبل و بعد، از آنجایی که با الگوی سرچ مطابقت دارد را نمایش می دهد و البته تعداد خط ها را می توانید تغییر دهید.
هنگامی که grep نتایج را با تعداد زیادی تطابق نمایش می دهد، نمایش شماره خطوط هم می توانید بسیار مفید باشد. برای نمایش شماره خط، عملگر n- را به هر دستور grep اضافه کنید. ما Phoenix را در دایرکتوری جاری سرچ می کنیم، دو خط قبل و بعد از تطابق را به همراه شماره خطوط آنها نشان می دهیم.
فایلهای مجزا، مانند فایلهای لاگ، میتوانند دارای تطبیقهای زیادی برای الگوهای جستجوی grep باشند. با افزودن گزینه m- و یک عدد به دستور، تعداد خطوط خروجی grep را محدود کنید.
در این مقاله، نحوه استفاده از دستور grep را با کمک مثال های مختلف نمایش خواهیم داد. دستور grep در ابتدایی ترین و ساده ترین شکل خود از سه قسمت تشکیل شده است. قسمت اول با دستور grep شروع می شود و به دنبال آن الگوی مورد جستجوی شما قرار می گیرد. بعد از رشته، نام فایلی می آید که grep در آن جستجو می کند.
ساده ترین دستور دستور grep به شکل زیر است:
این دستور می تواند شامل بسیاری از گزینه ها، تغییرات الگو یا pattern و نام فایل ها باشد. هر تعداد گزینه را که لازم است ترکیب کنید تا به نتایج مورد نیاز خود برسیددر ادامه رایج ترین مثال های دستور grep را به شما دوستان نشان خواهیم داد.
توجه: Grep به حروف بزرگ و کوچک حساس است. هنگام اجرای دستورات grep حتما از حروف درست استفاده کنید.
برای پرینت هر خطی از فایلی که دارای الگوی خاصی از کاراکترها است، در مورد ما phoenix در فایل sample2، دستور را اجرا کنید. البته شما باید الگوی کاراکتر خودتان را جایگزین کنید:
grep phoenix sample2
Grep هر خطی را کلمه phoenix را در خود دارد نمایش می دهد. هنگام اجرای این دستور، مطابقت دقیقی دریافت نمی کنید. در عوض، ترمینال خطوط را با کلمات حاوی رشته کاراکترهایی که وارد کرده اید چاپ می کند. به عنوان مثال:
یعنی phoenix چه بصورت یک کلمه مجزا و چه در لابلای کلمات گنجانده شده باشد، آن را بر می گرداند.
نکته: اگر الگوی جستجوی شما دارای کاراکترهایی غیر از عدد است، از علامت نقل قول استفاده کنید که شامل فضاهای خالی یا هر چیز دیگری است.
برای جستجوی چندین فایل با دستور grep، نام فایلهایی را که میخواهید در آنها سرچ انجام دهید را با فاصله یا space از هم جدا کنید. در این مثال، دستور grep برای سرچ کلمه phoenix در سه فایل sample، sample2 و sample3 باید بصورت زیر دستور را وارد کنید:
grep phoenix sample sample2 sample3
ترمینال نام هر فایلی که حاوی خطوط منطبق باشد و خطوط واقعی که شامل رشته مورد نیاز از کاراکترها است را نمایش می دهد.
به هر تعداد که فایل داشته باشید می توانید به دستور اضافه کنید. تریمنال هر تطبیقی که در فایل های شما پیدا کند، در خروجی بصورت یک خط مجزا نشان می دهد.
Search All Files in Directory by grep command
برای جستجوی همه فایلها در دایرکتوری جاری، به جای نام فایل در انتهای دستور grep از یک ستاره استفاده کنید. در این مثال از nix به عنوان شرط سرچ خودمان استفاده می کنیم:grep nix *
در مثال اول، ما از الگوی phoenix برای سرچ در فایل یا فایل ها استفاده کردیم و دیدیم که phoenix چه بصورت یگک کلمه مجزا و چه در لابلای کلمات موجود بود، در خروجی نمایش داده شد. حالا دستور را می خواهیم طوری بنویسیم که اگر کلمه مورد نظر ما بصورت مجزا وجود داشت، آن را نمایش دهد. مثلا اگر phoenix بصورت یک کلمه مجزا در فایل وجود داشت، نشان دهد. برای جستجوی کلمه phoenix در تمام فایل های دایرکتوری جاری، w- را به دستور grep اضافه کنید.
grep -w phoenix *
این گزینه فقط خطوطی را با تطابق کامل کلمه و نام فایل هایی که کلمه را در آنها پیدا کرده را نمایش می دهد.
همانطور که بالاتر گفتیم، دستور grep یک دستور case sensitive بوده و حساس به حروف بزرگ و کوچک است. ولی چگونه این حساسیت دستور grep را می توانیم از بین بریم؟ برای این منظور باید از سوئیچ i- استفاده کنید. لطفا به مثال زیر توجه کنید:
grep -i phoenix *
برای گنجاندن همه ساب دایرکتوری ها در سرچ می توانید عملگر r- را به دستور اضافه کنید:
grep -rw phoenix *
با این دستور همه فایل ها موجود در دایرکتوری جاری و حتی ساب دایرکتریو ها موجود در دایرکتوری جاری را بر اساس الگوی داده شده سرچ کرده و نتایج را نمایش می دهد ضمن اینکه از w- استفاده شده که فقط کلمه مستقل و مجزا را بر اساس الگوی جستجو نمایش می دهد . اما دستور فوق کماکان حساس به حروف بزرگ و کوچک است که می توانید i- را به دستور اضافه کنید تا این حساسیت نادیده گرفته شود:
grep -rwi phoenix *
پس بصورت ترکیبی هم خیلی ساده و راحت می توانید از سوئیچ ها و گزینه ها استفاده کرد.
می توانید از grep برای نمایش تمام خطوطی که با الگوی خاصی از کاراکترها مطابقت ندارند استفاده کنید. برای معکوس کردن جستجو، v- را به دستور grep اضافه کنید. مثلا برای Exclude کردن خطوطی که حاوی phoenix هستندف به شکل زیر از دستور استفاده کنید:
grep -vi phoenix sample
ترمینال تمام خطوطی را که حاوی کلمه مورد استفاده به عنوان معیار جستجو نیستند نمایش می دهد. ما در دستور از i- هم استفاده کرده ایم که توضیحات آن را بالاتر دادیم:
دستور grep زمانی که در یک فایل مطابقت پیدا می کند، همه خطوط را پرینت می کند. برای پرینت تنها خطوطی که کاملاً با رشته جستجو مطابقت دارند، گزینه x- را اضافه کنید.
grep -x "phoenix number3" *
اگر کلمه یا کاراکتر دیگری در همان خط وجود داشته باشد، grep آن را در نتایج جستجو لحاظ نمی کند. اگر در بین کلماتتان فاصله دارید، quotation marks را فراموش نکنید. در تصویر زیر یکبار دستور بدوم x- و یکبار همراه با x- انجام شده است و همانطور که مشاهده می کنید، نتایج متفاوت است:
بعضا، شما فقط باید نام فایل هایی را پیدا کنید که حاوی کلمه یا رشته ای از کاراکترها هستند. برای پرینت فقط نام فایل هایی که با جستجوی شما مطابقت دارند، از عملگر l- استفاده کنید:
grep -l phoenix *
Grep می تواند نام فایل ها و تعداد خطوط را در جایی که برای کلمه شما مطابقت پیدا می کند نمایش دهد. از عملگر c- برای شمارش تعداد تطابق استفاده کنید:
grep -c phoenix *
حالا به مثال های دیگری که می زنیم توجه کنید:
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 باشند. با افزودن گزینه m- و یک عدد به دستور، تعداد خطوط خروجی grep را محدود کنید.
grep -m2 Phoenix sampleخب، در این مقاله تمام تلاش بر این بود که شما را تا حد امکان با شیوه به کار گیری دستور grep در لینوکس آشنا کنیم که امیدواریم از آموزش لذت برده باشید. اگر شما دوستان عزیز هم نکته دیگری در خصوص این دستور دارید، لطفا آن را در قسمت ثبت نظرات و دیدگاه ها با ما و سایر دوستان تان به اشتراک قرار دهید.
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: