استفاده از قابلیت Grep Regex در خط فرمان grep

دستور grep یک ابزار ضروری برای هر مبتدی، تازه کار یا متخصص خط فرمان لینوکس است. این کار کار شما را بسیار ساده تر می کند و استفاده بسیار آسان است.

به عنوان یک تعریف کوتاه، grep یک باینری است که برای یک الگو در یک فایل جستجو می کند. فرمان grep را می توان با چندین روش سفارشی کرد.

مثال های پایه:

 grep PATTERN FILE برای PATTERN دقیق (مورد حساس) در FILE داده شده 

***

 # grep فایل  فایل  با این مجوز حاوی پاراگراف های زیر است: 

دریافت یک نسخه از این نرم افزار و اسناد مرتبط فایل ها

** *

grep پشتیبانی از پارامترهای مختلفی را نیز می توان ترکیب کرد.

'grep -i' حساسیت را نادیده می گیرد:

***

 # grep -i files copyright.doc 
 فایل ها : * 

 فایلها : schedutils / ionice.c 

 فایلها : schedutils / chrt.c 

 فایلها : disk-utils / raw.c 

فایل با این مجوز دارای برچسب های زیر است:

گرفتن کپی از این نرم افزار و اسناد مرتبط فایل ها

***

grep -v یک نمونه از جستجوی را حذف می کند:

***

 # grep -i files copyright.doc | grep -v schedutils 
 فایلها : * 

 فایلها : disk-utils / raw.c 

فایلهای با این مجوز دارای برچسبهای زیر هستند: [19659008] بدست آوردن یک کپی از این نرم افزار و اسناد مرتبط فایل ها

***

این گفته می شود، بگذارید در موضوع خاص ما، با استفاده از grep با عبارات منظم، 19659002] عبارات منظم (regex) الگویی است که مجموعه ای از رشته ها را توصیف می کند. عبارات منظم از اپراتورهای خاصی برای ترکیب عبارات کوچکتر استفاده می کنند و مشابه با عبارات حساب شده ساخته می شوند.

گزینه های را بیاموزیم.

شخصیت ^ فقط یک کلمه را در ابتدای یک خط مطابقت می دهد، در حالی که شخصیت $ فقط مطابقت می کند یک کلمه در انتهای یک خط:

***

 # grep -i "^ files" copyright.doc 
 فایلها : * 

 فایلها : schedutils /ionice.c

Files : schedutils / chrt.c 

 فایلها : disk-utils / raw.c 
 # grep -i "files $" copyright.doc 

گرفتن یک کپی از این نرم افزار و اسناد مرتبط فایل ها

***

با استفاده از براکت ها، می توانید لیستی از کاراکترهایی را که از آن فقط یک در یک زمان استفاده می شود، برای الگوی جستجو دستور زیر برای هر واژه ای که حاوی تام، تایم یا تام است جستجو می کند.

***

 # grep-i "t [aio] m" copyright.doc 

2012 Andy Lu tom irski

فایلها: * / tim eutils *

***

ترکیب براکت ها و شخصیت می تواند به شما در حذف شخصیت از جستجو کمک کند. دستور زیر برای هر رشته ای که حاوی "le" و یک شخص قبل از "le" را جستجو می کند EXCEPT letter i:

***

 # grep   "[^i] le "copyright.doc 

در سیستم های دبیان، متن متن عمومی عمومی گنو

LIA BLE برای هر گونه مستقیم، غیر مستقیم، تصادفی، خاص، معرفت OR

باید آکینو wle dgement را نمایش دهد:

***

همانطور که می بینید، کلمات "file" و "فایل ها" همسان نیستند.

دوره. هر یک از کاراکترها را از جمله فضای خالی مطابقت می دهد:

***

 # grep -i 'file'. فایل : 

 فایلها : schedutils / ionice.c 

 فایلها : schedutils / chrt.c 

 فایلها : disk-utils / raw.c 

پرونده های 19459011 با این مجوز دارای برچسبهای زیر است:

این پرونده تحت شرایط

مجددا توزیع می شود در /

یک کپی از این نرم افزار و اسناد مرتبط فایل

***

برای مطابقت با 2 حرف قبل از رشته، می توانید از آن استفاده کنید ..

***

 # grep -i '..le' copyright.doc 
 فایل  s: * 

 پرونده  s: schedutils / ionice.c 

 پرونده  s: schedutils / chrt.c 

 پرونده  s: disk-utils / raw.c 

فایل با این مجوز دارای برچسب های زیر است:

در سیستم های دبیان، شرکت mple متن عمومی عمومی GNU

BE LI ABLE برای هرگونه تقاضای، ضرر و زیان و یا دیگر مسئولیت، در

*** 19659002] اگر بخواهید به جای استفاده از آنها، رشته دقیق را جستجو کنید، این اپراتورها باید "فرار" شوند. با "فرار کرد"، منظورم استفاده از "در مقابل آنها " است. مثال:

grep "2." copyright.doc هر رشته حاوی "2" و یک شخص بعد از آن مطابقت دارد:

***

 # grep "2. " copyright.doc 

مجوز: BSD- 2- clause

2. توزیع مجدد در فرم باینری باید کپی رایت بالا را بازتولید کند

2) توزیع مجدد در فرم باینری باید این اعلامیه کپی رایت بالا را تولید کند،

2. توزیع مجدد در فرم باینری باید کپی رایت بالا

***

در حالی که grep "2 ." copyright.doc تنها با رشته ای حاوی "2" مطابقت دارد. :

***

 # grep "2". copyright.doc 

2. توزیع مجدد در فرم باینری باید کپی رایت بالا

2. توزیع مجدد در فرم باینری باید کپی رایت بالا را منتشر کند

***

بعضی از کلاس های از پیش تعیین شده شخصیت ها می توانند در ساخت یک فرمان grep شامل شوند.

اینها به ترتیب حروف الفبا [:alnum:]، [:alpha:]، [:cntrl:]، [:digit:]، [:graph:]، [:lower:]، [:print:]، [:punct:]، [:space:]، [:upper:]، و [:xdigit:]

برای مطابقت با تمام خطوط حاوی اعداد، [:digit:]] copyright.doc

 # grep [[:digit:]] copyright.doc 
 مجوز: LGPL-  2 .  1  + 

 Copyright:  2001  Andreas Dilger 

 Copyright:  2008  -  2012  Karel Zak 

 مجوز: LGPL-  .  1  + 

 Copyright:  2013 ، Red Hat، Inc. 

"

شما باید از این کلاس ها در میان مجموعه دیگری از براکت ها استفاده کنید [[:digit:]] و نه [:digit:].

[:digit:] فقط بیان یک پیش تعریف شده برای [0123456789] است.

سرانجام، همانطور که در کتاب راهنمای grep بیان شد:

یک عبارت منظم میتواند به یکی از چندین اپراتور تکرار شود:

؟ مورد قبلی اختیاری است و بیشترین بار برابر است.

* مورد قبلی برابر صفر یا بیشتر برابر خواهد بود.

+ مورد قبلی یک یا چند بار مطابقت خواهد داشت.

{N} مورد قبلی دقیقا N بار مطابقت دارد

{N،} مورد قبلی برابر با n یا بیشتر بار است

{N، M} مورد قبلی برابر حداقل N بار، اما نه بیشتر از M بار

به عنوان مثال، با استفاده از oll * هر دو رشته شامل ol و oll

***

 # grep oll * copyright.doc 
   text-utils / c  o  lc 

   text-utils / c  ol  crt.c   text-utils / c  ol  rm.c 

   text-utils / c  ol  umn.c [19659100] فایل ها: libsmartc  ol  s / * 

فایل های برچسبگذاری شده با این مجوز شامل f oll به دلیل پاراگرافها:

اصلاح، مجاز است با توجه به f Oll در شرایط شرایط

***

با استفاده از grep و یو تصور تخیلی می تواند به شما در انجام کارهای پیچیده در عرض چند ثانیه کمک کند.