مقدمه
دستور `grep` یکی از قدرتمندترین ابزارهای موجود در لینوکس است که برای جستجوی الگوهای متنی در فایلها و خروجی دستورات استفاده میشود. این دستور مخفف عبارت Global Regular Expression Print است و میتواند متن خاصی را با استفاده از الگوهای ساده یا پیچیده (مانند عبارات منظم) جستجو کند. در این مقاله، به آموزش کامل استفاده از دستور `grep` میپردازیم.
ساختار دستور Grep
ساختار کلی دستور `grep` به صورت زیر است:
grep [گزینهها] "الگو" [فایلها]
– الگو: متن یا عبارت منظمی که میخواهید جستجو کنید.
– فایلها: فایل یا فایلهایی که میخواهید در آنها جستجو انجام شود.
نمونههای ساده استفاده از Grep
۱. جستجوی یک متن خاص در فایل
برای جستجوی عبارت “example” در فایلی به نام `file.txt`:
grep "example" file.txt
۲. جستجو در چند فایل به طور همزمان
برای جستجو در فایلهای `file1.txt` و `file2.txt`:
grep "example" file1.txt file2.txt
۳. جستجو بدون در نظر گرفتن حروف بزرگ و کوچک
برای جستجو بهصورت غیرحساس به حروف بزرگ و کوچک:
grep -i "example" file.txt
گزینههای پرکاربرد Grep
۱. -n: نمایش شماره خط
این گزینه شماره خطهایی که متن در آنها پیدا شده را نمایش میدهد:
grep -n "example" file.txt
۲. -v: نمایش خطوطی که شامل الگو نیستند
برای نمایش تمام خطوطی که حاوی عبارت جستجو شده نیستند:
grep -v "example" file.txt
۳. -c: شمارش تعداد مطابقتها
برای شمارش تعداد خطوطی که شامل عبارت موردنظر هستند:
grep -c "example" file.txt
۴. -r: جستجو به صورت بازگشتی در پوشهها
برای جستجو در تمام فایلهای یک پوشه و زیرپوشههای آن:
grep -r "example" /path/to/directory
۵. -l: نمایش نام فایلهایی که شامل الگو هستند
اگر بخواهید فقط نام فایلهایی که شامل عبارت جستجو هستند را مشاهده کنید:
grep -l "example" *
استفاده از عبارات منظم (Regular Expressions)
دستور `grep` از عبارات منظم برای جستجوهای پیچیدهتر پشتیبانی میکند.
۱. جستجوی خطوطی که با یک عبارت شروع میشوند
برای پیدا کردن خطوطی که با کلمه “start” شروع میشوند:
grep "^start" file.txt
۲. جستجوی خطوطی که با یک عبارت پایان مییابند
برای پیدا کردن خطوطی که با کلمه “end” تمام میشوند:
grep "end$" file.txt
۳. جستجوی خطوطی که شامل یک الگو با کاراکترهای خاص هستند
برای جستجوی هر رشتهای که شامل “t” و سپس هر کاراکتر دیگری است:
grep "t." file.txt
ترکیب دستور Grep با سایر دستورات لینوکس
۱. استفاده با دستور `ls`
برای پیدا کردن فایلهای خاص با استفاده از الگوی نام:
ls | grep "example"
۲. ترکیب با `ps` برای جستجوی پروسهها
برای پیدا کردن پروسهای خاص:
ps aux | grep "firefox"
۳. فیلتر کردن خروجی دستورات دیگر
مثلاً پیدا کردن خطوطی که شامل خطا (error) هستند:
dmesg | grep "error"
نسخههای پیشرفتهتر: egrep و fgrep
– egrep: نسخهای از `grep` که از عبارات منظم پیشرفتهتر (Extended Regular Expressions) پشتیبانی میکند.
egrep "(error|warning)" file.txt
– fgrep: نسخهای از `grep` که بدون استفاده از عبارات منظم عمل میکند.
fgrep "example" file.txt
جمعبندی
دستور `grep` یکی از ابزارهای ضروری و کاربردی برای هر کاربر لینوکس است. با تسلط بر این دستور، میتوانید به راحتی متنها را در فایلها جستجو کنید، خروجی دستورات را فیلتر کنید و حتی از عبارات منظم برای جستجوهای پیچیدهتر استفاده کنید. پیشنهاد میکنیم این دستور را در پروژهها و کارهای روزمره خود امتحان کنید تا بهتر با قدرت آن آشنا شوید.