grep
فهرست
- مقدمه
- فیلتر کردن کلمه خاص در فایل
- ترکیب ابزار با cat
- فیلتر کردن بدون حساسیت به حروف بزرگ و کوچک
- نمایش تعداد تکرار کلمه خاص در فایل
- جستجو به شکل بازگشتی
- جستجو با الگوهای منظم یا regular expression
- نمایش شماره خطوطی که کلمه خاص در آن ها وجود دارد
- خروجی رنگی از ابزار
- ترکیب ابزار با ابزار find
- جستجو در فایلهای فشرده
- Author or Authors
مقدمه
ابزار grep یکی از اساسی ترین ابزارهای لینوکس است، این ابزار به خانواده ابزارهای egrep و fgrep تعلق دارد. این ابزارها، به منظور انجام عملیات جستجو در فایلها و متنها طراحی شده اند. بدین صورت که کاربر با تعیین معیارهای خاص جستجو از طریق دستور grep میتواند فایلها و محتوای آنها را برای دستیابی به اطلاعات مفید جستجو نماید. اما یک چیز دیگر که لازم است بدانید این است که این ابزار قدرتمند ریجکس ها را هم از شما قبول میکند. regex یا یک عبارت منظم الگویی است که با مجموعه ای از رشته ها مطابقت دارد. یک الگو متشکل از عملگر ها کاراکترها و …. است که معنای خاصی دارند. در ساده ترین شکل زمانی که به ابزار هیچ نوع عبارت منظمی داده نمیشود، ابزار الگوهای جستجو را به عنوان عبارات با قاعده پایه تفسیر میکند. برای تقسیر الگو به عنوان یک عبارت منظم از سوییچ E- استفاده خواهیم کرد.
فیلتر کردن کلمه خاص در فایل
برای فیلتر کردن و نمایش کلمات خاصی در فایل میتوانید بدون استفاده از سوییچ خاصی اینکار را انجام دهید . زیرا ابزار به شکل استاندارد به کلمات حساس هست . برای مثال amir با Amir متفاوت است.
$ cat test.txt
# amirhosein
Amirhosein
Arya
arya
Jadi
jadi
$ grep 'amir' test.txt
# amirhoein
ترکیب ابزار با cat
حتی میتوانید دستور بالا را در یک خط تایپ کنید و ابزار را با cat ترکیب کنید. بدین ترتیب فایل با استفاده از cat خوانده میشود و با پایپ | خروجی را به grep انتقال میدهیم و عملیات اجرا میشود.
$ cat test.txt | grep -i 'amir' test.txt
# amirhosein
Amirhosein
فیلتر کردن بدون حساسیت به حروف بزرگ و کوچک
برای فیلتر کردن میتوانید از سوییچ i- استفاده کنید . زمانی که از این سوییچ استفاده میکنید ابزار به کلمات حساسیتی نشان نمیدهد . به عنوان مثال هنگام فیلتر Amir با amir تفاوتی نمیکند.
$ cat test.txt
# amirhosein
Amirhosein
Arya
arya
Jadi
jadi
$ grep -i "amir" test.txt
# amirhosein
Amirhosein
نمایش تعداد تکرار کلمه خاص در فایل
با استفاده از سوییچ c- میتوانید بفهمید که از کلمه خاص شما چند تکرار وجود دارد. سوییچ c- در فایل به جستجو میپردازد و تعداد کلمه خاص را برای شما برمیگرداند.
$ grep -c 'amir' test.txt
# 1
جستجو به شکل بازگشتی
برای جستجو در دایرکتوری ها و زیر شاخه های تو در تو، از سوییچ r- استفاده کنید. فقط در هنگام استفاده از این سوییچ توجه داشته باشید که نام فایلی را در خط فرمان وارد نمیکنید، شما باید یک مسیر ارائه دهید. برای مثال در اینجا ما دایرکتوری فعلی را با گذاشتن نقطه در نظر گرفته ایم. همانطور که میدانید نقطه اشاره گر به دایرکتوری فعلی و دو نقطه اشاره گر به دایرکتوری قبل از دایرکتوری فعلی است. ولی اینجا چون از سوییچ r- استفاده میکنید دو نقطه تاثیری نخواهد داشت. لازم است بدانید که سوییچ R- هم در اینجا وجود دارد که هنگام استفاده از این سوییچ symbolic link ها و دایرکتوری های اشاره شده توسط لینک ها نیز جستجو میشود.
$ grep -r paste .
$ grep -R paste .
جستجو با الگوهای منظم یا regular expression
در ابتدای توضیحات گفتم که میتوانید به این ابزار رجکس بدهید و با استفاده از آن ها جستجوهای خود را انجام دهید . با استفاده از سوییچ E- میتوانید به ابزار رجکس بدهید. فقط توجه داشته باشید که رجکس شما حتما در "" یا دو دابل کوتیشن باشد. زیرا در غیر اینصورت ابزار به درستی کار نخواهد کرد.
$ grep -i -E "amir|grep" grep.md
# title: "grep"
ابزار grep یکی از اساسی ترین ابزارهای لینوکس است، این ابزار به خانواده ابزارهای egrep و fgrep تعلق دارد. این ابزارها، به منظور انجام عملیات جستجو در فایلها و متنها طراحی شده اند. بدین صورت که کاربر با تعیین معیارهای خاص جستجو از طریق دستور grep میتواند فایلها و محتوای آنها را برای دستیابی به اطلاعات مفید جستجو نماید.
برای فیلتر کردن و نمایش کلمات خاصی در فایل میتوانید بدون استفاده از سوییچ خاصی اینکار را انجام دهید . زیرا ابزار به شکل استاندارد به کلمات حساس هست . برای مثال amir با Amir متفاوت است.
# amirhosein
Amirhosein
$ grep 'amir' test.txt
# amirhoein
نمایش شماره خطوطی که کلمه خاص در آن ها وجود دارد
با استفاده از سوییچ n- میتوانید شماره خطوطی که کلمه خاص شما در آن ها وجود دارد را ببینید.
$ grep -n 'amir' test.txt
# 1:amirhosein
خروجی رنگی از ابزار
با استفاده از سوییچ color– میتوانید خروجی را به شکل رنگی ظاهر کنید. این سوییچ زمانی کار خواهد کرد که الگوی مورد نظر ما پیدا شود . در اینصورت خروجی برای شما به شکل رنگی ظاهر خواهد شد.
$ grep --color 'amir' test.txt
ترکیب ابزار با ابزار find
بالاتر ابزار را با ابزار cat ترکیب کردیم ولی در استفاده های حرفه ای تر ماجرا متفاوت است . برای مثال در دستور زیر با استفاده از ابزار find تمامی فایلهای py موجود در دایرکتوری home را پیدا میکنیم و سپس با ابزار grep فایلهای دارای نام خاص را جدا میکنیم .
$ sudo find /home -name '.py' | grep -i import
جستجو در فایلهای فشرده
زمانی که قصد دارید درون یک فایل فشرده gz شروع به جستجو کنید باید از دستور zgrep استفاده کنید. عملکرد این دستور همانند دستور grep است. به عنوان مثال در فایل فشرده زیر به دنبال عبارت amir هستیم.
$ zgrep -i 'amir' /home/amirhosein/Downloads/amirhh.gz