grep استفاده
برنامه اصلی که برای کار با عبارات منظم استفاده خواهیم کرد، دوست قدیمی ما است، grep استفاده. نام "grep" در واقع از عبارت "چاپ عبارت منظم جهانی" گرفته شده است، بنابراین ما می توانیم آن را ببینیم grep استفاده ربطی به عبارات منظم دارد. در اصل، grep استفاده فایلهای متنی را برای یافتن متنی که با یک عبارت منظم مشخص مطابقت دارد جستجو میکند و هر خطی که حاوی یک مطابقت با خروجی استاندارد باشد را خروجی میدهد.
تا الان استفاده کردیم grep استفاده با رشته های ثابت، مانند:
[me@linuxbox ~]$ ls /usr/bin | grep zip
[me@linuxbox ~]$ ls /usr/bin | grep zip
با این کار تمام فایلهای موجود در فهرست فهرست میشوند / usr / bin دایرکتوری که نام آن حاوی زیر رشته “zip” است.
La grep استفاده برنامه گزینه ها و آرگومان ها را به این صورت می پذیرد:
grep [گزینه های] regex [فایل...]
جایی که regex یک عبارت منظم است
در اینجا لیستی از موارد رایج استفاده می شود grep استفاده گزینه ها:
جدول 19-1: گزینه های grep
توضیحات گزینه
توضیحات گزینه
-i مورد نادیده گرفته شود. بین حروف بزرگ و کوچک تمایز قائل نشوید. همچنین ممکن است مشخص شود --نادیده گرفتن مورد.
-v مطابقت معکوس به طور معمول، grep استفاده خطوطی را چاپ می کند که حاوی یک مسابقه هستند.
این گزینه باعث می شود grep استفاده برای چاپ هر خطی که دارای مسابقه نیست. همچنین ممکن است مشخص شود --مطابقت معکوس.
-c چاپ تعداد موارد منطبق (یا غیر منطبق در صورت -v گزینه نیز مشخص شده است) به جای خود خطوط. همچنین ممکن است مشخص شود --شمردن.
-l به جای خود خطوط، نام هر فایلی که حاوی یک مسابقه است را چاپ کنید. همچنین ممکن است مشخص شود --فایلها-با-مطابقات.
-L مانند گزینه -l، اما فقط نام فایل هایی را که مطابقت ندارند چاپ کنید. همچنین ممکن است --فایل-بدون- مطابقت مشخص شود.
-n پیشوند هر خط منطبق با شماره خط داخل فایل. همچنین ممکن است --line-number مشخص شود.
-h برای جستجوی چند فایل، خروجی نام فایل ها را متوقف کنید. همچنین ممکن است مشخص شود -- بدون نام فایل.
به منظور کاوش کاملتر grep استفاده، بیایید چند فایل متنی برای جستجو ایجاد کنیم:
grep استفاده
[me@linuxbox ~]$ ls /bin > dirlist-bin.txt [me@linuxbox ~]$ ls /usr/bin > dirlist-usr-bin.txt [me@linuxbox ~]$ ls /sbin > dirlist-sbin.txt [me@linuxbox ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [me@linuxbox ~]$ ls dirlist*.txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
[me@linuxbox ~]$ ls /bin > dirlist-bin.txt [me@linuxbox ~]$ ls /usr/bin > dirlist-usr-bin.txt [me@linuxbox ~]$ ls /sbin > dirlist-sbin.txt [me@linuxbox ~]$ ls /usr/sbin > dirlist-usr-sbin.txt [me@linuxbox ~]$ ls dirlist*.txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
ما میتوانیم یک جستجوی ساده در لیست فایلهایمان مانند این انجام دهیم:
[me@linuxbox ~]$ grep bzip dirlist*.txt
dirlist-bin.txt:bzip2 dirlist-bin.txt:bzip2recover
[me@linuxbox ~]$ grep bzip dirlist*.txt
dirlist-bin.txt:bzip2 dirlist-bin.txt:bzip2recover
در این مثال ، grep استفاده تمام فایل های فهرست شده را برای رشته جستجو می کند bzip و دو منطبق را، هر دو در فایل پیدا می کند dirlist-bin.txt. اگر ما فقط به فهرست فایلهایی که حاوی موارد منطبق هستند علاقه مند بودیم، میتوانیم آن را مشخص کنیم. -l گزینه:
[me@linuxbox ~]$ grep -l bzip dirlist*.txt
dirlist-bin.txt
[me@linuxbox ~]$ grep -l bzip dirlist*.txt
dirlist-bin.txt
برعکس، اگر بخواهیم فقط فهرستی از فایلهایی را ببینیم که دارای تطابق نیستند، میتوانیم این کار را انجام دهیم:
[me@linuxbox ~]$ grep -L bzip dirlist*.txt
dirlist-sbin.txt dirlist-usr-bin.txt dirlist-usr-sbin.txt
[me@linuxbox ~]$ grep -L bzip dirlist*.txt
dirlist-sbin.txt dirlist-usr-bin.txt dirlist-usr-sbin.txt