آموزش جامع دستور grep و اینکه آیا تا به حال شده است که به دنبال یک الگو و یا کلمهای درون یک متن باشید ولی دقیقاً ندانید چطور باید آن را پیدا کنید؟ این امر به سهولت توسط دستور grep در لینوکس قابل اجراست.
grep دستور پیدا کردن الگوها درون متون میباشد که با تمامی ورژن های لینوکس به صورت پیش فرض ارائه شده است. ولی اگر به هر دلیلی این ابزار کارآمد بر روی لینوکس شما نصب نبود بهراحتی میتوانید توسط مخزن مدیریت پکیج لینوکس خود آن را نصب کنید.
در مقاله آموزش دستورات لینوکس تمامی دستورات مدیریتی و آموزش جامع دستور grep در لینوکس را آموزش دادیم ولی در این جلسه در نظر داریم این دستور را دقیقتر و تخصصیتر مورد بررسی و استفاده قرار دهیم.
در سیستمهای دبیان بیس برای نصب میتوانند از دستور زیر استفاده کنند.
sudo apt-get install grep
و در سیستمهای ردهت بیس نیز میتوانند توسط دستور زیر اقدام به نصب grep توسط مخزن پکیج خود کنند.
sudo yum install grep
خوب حالا که grep نصب شد بهترین راه استفاده کاربردی از دستور grep در لینوکس عمیق شدن در کاربرد آن است که در ادامه آموزش مفصل آن را بررسی خواهیم کرد.
دستور grep قابلیت بررسی درون محتوای یک فایل و یا چندین فایل را به صورت همزمان داراست، همچنین میتوانیم با ترکیب دستور grep با کامندهای دیگر لینوکس یک الگوی قدرتمندتری برای سرچ در لینوکس ایجاد کنیم.
نحوه استفاده از دستور grep در لینوکس
در مثال زیر ما در کل سیستم، فایلهایی که به فرمت mp3 بوده را جستجو و پیدا میکنیم و درون این فایلها به دنبال عبارات موردنظر خود میگردیم، تمامی این کارها فقط و فقط با یک دستور قابل انجام خواهد بود.
find / –name "*.mp3" | grep –i sound
در این دستور ما علاوه بر پیدا کردن تمامی فایلهای با فرمت mp3. درون آنها فایلهایی که نام آن ها برابرست با sound را خروجی میگیریم.
خروجی گرفتن از تعداد رشتههای تکرار شده در فایلها و دستورات
در مثال زیر ما خروجی دستور grep در لینوکس را بررسی میکنیم و سپس توسط grep تعداد دفعاتی که کلمه Link تکرار شده است را در خروجی چاپ میکنیم.
ifconfig | grep –c Link
در مواقعی شما ممکن هستش با ارورهای خاصی در سیستم مواجه شوید و بخواهید یک فایل را دیباگ کنید و خط موردنظر آن را پیدا کنید و سپس درون آن فایل خط موردنظر را تصحیح کنید برای این کار سوییچ n- خط و محتوای مرتبط به رشتهای که به دنبال آن هستید را چاپ میکند.
grep –n "tcp" test.pl
یک دستور ترکیبی برای جستجوی حرفه ای تر توسط grep دستور زیر هستش که توسط آن شما می توانید تمامی فایلهایی که دارای فرمت mp4. هستند را پیدا کرده سپس فایلهایی که خواننده آن به طور مثال david هستند را پیدا کرده و خروجی های شامل remix را نشان ندهد.
"find . -name ".mp4" | grep -i david | grep -vi "remix
در مواقعی که قصد دارید درون یک فایل فشرده gz را جستجو کنید باید از دستور zgrep استفاده کنید، این دستور نیز عملکردی مشابه دستور grep در لینوکس خواهد داشت.
در دستور زیر ما به دنبال عبارت error در فایل فشرده هستیم.
zgrep –i error /var/log/syslog.2.gz
چنانچه به دنبال به الگوی دقیق و ثابت هستید و یا نام فایلی را میدانید میتوانید از دستور زیر استفاده کنید.
fgrep –f file_full_of_patterns.txt file_to_search.txt
دستور fgrep همان دستور grep -F نیز میباشد.
در دستور بالا ما یک فایل حاوی الگو و رشتههای موردنظر ایجاد کردیم و در فایل دوم نیز فایلهایی که میخواهیم درون آن ها به دنبال آن رشتهها باشیم.
چنانچه بخواهید به صورت recursively یا تودرتو دنبال عبارتی باشیم با دستور زیر بهراحتی میتوانیم این عمل را انجام دهیم و این کار با سوییچ r- قابل انجام خواهد بود.
grep -r "192.168.1.5" /etc
خوب در آخر هم یک ترفند باحال اجرا کنیم، اگر الگویی که موردنظر ما بود در خروجی بهصورت رنگی ظاهر بشه، این کار با گزینه color — انجام میشه.
grep --color modireserver /etc/passwd+
خوب همانطور که ملاحظه کردید با استفاده از دستور grep در لینوکس که بسیار قدرتمند و کاربردی نیز هست میتواند به دنبال کلمات و الگوهای مختلفی باشید و نیاز به جستجو درون متن و فایلها را به کمک این دستور رفع نمایید.