آیا شما تا حالا توی وضعیتی بودید، جایی که نیاز داشته باشید به دنبال یک string یا یک word و همچنین یک pattern توی یک فایل بگردید؟ اگر بله، پس ابزار grep در چنین وضعیتی مفید خواهد بود.
grep یک ابزار command line برای جستجوی متن (plain-text) برای خط هایی که با regular expration ها مچ (match) هستند، استفاده میشود. اگر ما بخوایم grepرا معنی کنیم به این صورت میشه (globally search a regular expression and print)، که با جستجوی pattern در فایل و print کردن ان خط در صفحه نمایش (standard input) میباشد.
در این مقاله من میخوام دستور پیشرفته grep را در Character Classes و Bracket Expressions در سیستم عامل مثل Linux و Unix توضیح بدهم. در اینجا فایل های مختلفی برای سرچ کردن pattern های مان در نظر گرفتیم، که با کمک دستور grep در این آموزش توضیح میدهیم.
همچنین توصیه میشود مطالعه کنید :
دستور grep در لینوکس به همراه 12 مثال عملی
دستور grep در لینوکس برای جستجوی چندین پترن، کلمه، عبارت
تفاوت بین Egrep - Grep و Fgrep در لینوکس چیست؟
1 - Search Alphanumeric Characters
اگر شما هزاران خط در یک فایل دارید و میخواید یک خطی که فقط با A-Z , a-z , 0-9 شروع شده (Alphanumeric Characters) را جستجو کنید از دستور زیر استفاده کنید :
2 - Search Alpha Characters
اگر شما میخواید خطی را که با [A-Z & a-z] شروع شده باشد را جستجو کنید میتوانید از option های مشابه استفاده کنید :
3 - Search Blank Characters
آپشن های دیگری همانند اینکه اگر شما میخواهید برای جستجوی خط که میخواد با [Tab & Space] شروع بشه (به طور مثال Blank Characters) میتوانید از دستور زیر استفاده کنید :
4 - Search Digit Characters
آپشن digit برای grep همیشه برای جستجوی خطی که با [0-9] شروع خواهد شد (به طور مثال Digit Characters)، خیلی استفاده میشود.
5 - Search Lower Letters
آپشن دیگر برای grep که برای جستجوی خطی که با حروف کوچک [a-z] میخواهد شروع شود :
6 - Search Punctuation Characters
کاراکترهای Punctuation برای grep زمانی استفاده میشود که ما بخواهیم خطی که میخواهد با [! ” # $ % & ‘ ( ) * + , – . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~. ] شروع شود را جستجو کنیم :
7 - Search Graphical Characters
grep همچنین برای جستجوی یک خطی که میخواهد با Alphanumeric یا Punctuation Characters شروع شود استفاده میشود، که با عنوان Graphical Characters نامیده میشود.
8 - Search Printable Characters
به طور مشابه همانند Graphical Characters، برای جستجوی یک خط که با Alphanumeric, Punctuation و Space characters شروع میشوند، grep نیز مفید خواهد بود :
9 - Search Space Characters
grep همچنین یک قابلیت برای جستجوی یک خطی که با [tab, newline, vertical tab, form feed, carriage return, and space] شروع میشود، دارد :
10 - Search Uppercase Letters
از آپشن های دیگر در grep این هست که همچنین برای جستجوی یک خط که میخواهد با [A-Z] شروع شود، میتوان از Upper-case Latters یا حروف بزرگ استفاده کرد :
11 - Search Hexadecimal Digits
grep همچنین جستجو میکند یک خطی را که میخواهد با [0-9, A-F و a-f] شروع شده باشد :
توضیحاتی که من دادم قابلیت های پیشرفته ای از ابزار grep که خیلی قوی و قدرتمند هستند و برای جستجوی pattern ها در یک فایل استفاده میشوند. همچنین grep یک ابزار مهم برای shell scripting و برنامه نویس ها برای جستجوی pattern در داخل برنامه ها هستش و این ارزشش رو داشت که با آپشن های دیگر و syntax های آن آشنا بشید و وقت تون رو براش بذارید. خوشحال میشیم اگر تجربه جدید در این زمینه کسب کردید با ما به اشتراک بگذارید.
همچنین توصیه میشود مطالعه کنید :
دستور awk در لینوکس برای جستجو و فیلتر کردن عبارات، کلمه و ... (بخش اول)
10 دستور مفید برای Chaining Operators در لینوکس
موفق باشید.
grep یک ابزار command line برای جستجوی متن (plain-text) برای خط هایی که با regular expration ها مچ (match) هستند، استفاده میشود. اگر ما بخوایم grepرا معنی کنیم به این صورت میشه (globally search a regular expression and print)، که با جستجوی pattern در فایل و print کردن ان خط در صفحه نمایش (standard input) میباشد.
در این مقاله من میخوام دستور پیشرفته grep را در Character Classes و Bracket Expressions در سیستم عامل مثل Linux و Unix توضیح بدهم. در اینجا فایل های مختلفی برای سرچ کردن pattern های مان در نظر گرفتیم، که با کمک دستور grep در این آموزش توضیح میدهیم.
همچنین توصیه میشود مطالعه کنید :
دستور grep در لینوکس به همراه 12 مثال عملی
دستور grep در لینوکس برای جستجوی چندین پترن، کلمه، عبارت
تفاوت بین Egrep - Grep و Fgrep در لینوکس چیست؟
1 - Search Alphanumeric Characters
اگر شما هزاران خط در یک فایل دارید و میخواید یک خطی که فقط با A-Z , a-z , 0-9 شروع شده (Alphanumeric Characters) را جستجو کنید از دستور زیر استفاده کنید :
کد PHP:
# grep "^[[:alnum:]]" /etc/asterisk/chan_dahdi.conf
signalling=fxs_ks
usecallerid=yes
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
Transfer=yes
canpark=yes
Cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
relaxdtmf=yes
group=1
callgroup=1
pickupgroup=1
ringtimeout=8000
echocancel = yes
2015
2016
2 - Search Alpha Characters
اگر شما میخواید خطی را که با [A-Z & a-z] شروع شده باشد را جستجو کنید میتوانید از option های مشابه استفاده کنید :
کد PHP:
root@linux-zone:~# grep "^[[:alpha:]]" /etc/asterisk/chan_dahdi.conf
signalling=fxs_ks
usecallerid=yes
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
Transfer=yes
canpark=yes
Cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=yes
relaxdtmf=yes
group=1
callgroup=1
pickupgroup=1
ringtimeout=8000
echocancel = yes
3 - Search Blank Characters
آپشن های دیگری همانند اینکه اگر شما میخواهید برای جستجوی خط که میخواد با [Tab & Space] شروع بشه (به طور مثال Blank Characters) میتوانید از دستور زیر استفاده کنید :
کد PHP:
root@linux-zone:~# grep "^[[:blank:]]" /etc/asterisk/chan_dahdi.conf
; cause the given audio file to
; be played upon completion of
; an attended transfer.
; DAHDI channel. Defaults to "no". An enabled jitterbuffer will
; be used only if the sending side can create and the receiving
; side can not accept jitter. The DAHDI channel can't accept jitter,
; thus an enabled jitterbuffer on the receive DAHDI side will always
; be used if the sending side can create jitter.
; resynchronized. Useful to improve the quality of the voice, with
; big jumps in/broken timestamps, usually sent from exotic devices
; and programs. Defaults to 1000.
root@linux-zone:~#
4 - Search Digit Characters
آپشن digit برای grep همیشه برای جستجوی خطی که با [0-9] شروع خواهد شد (به طور مثال Digit Characters)، خیلی استفاده میشود.
کد PHP:
root@linux-zone:~# grep "^[[:digit:]]" /etc/asterisk/chan_dahdi.conf
2013 August
2014
2015
5 - Search Lower Letters
آپشن دیگر برای grep که برای جستجوی خطی که با حروف کوچک [a-z] میخواهد شروع شود :
کد PHP:
root@linux-zone:~# grep "^[[:lower:]]" /etc/asterisk/chan_dahdi.conf
signalling=fxs_ks
usecallerid=yes
callwaiting=yes
usecallingpres=yesechocancel = yes
6 - Search Punctuation Characters
کاراکترهای Punctuation برای grep زمانی استفاده میشود که ما بخواهیم خطی که میخواهد با [! ” # $ % & ‘ ( ) * + , – . / : ; < = > ? @ [ \ ] ^ _ ` { | } ~. ] شروع شود را جستجو کنیم :
کد PHP:
root@linux-zone:~# grep "^[[:punct:]]" /etc/asterisk/chan_dahdi.conf
%[fax](phones)
*dahdichan = 2
^faxdetect = no
;context = fax
;
_[phone-3](phones)
#dahdichan = 3
;pickupgroup = 3,4
#include dahdi-channels.conf
7 - Search Graphical Characters
grep همچنین برای جستجوی یک خطی که میخواهد با Alphanumeric یا Punctuation Characters شروع شود استفاده میشود، که با عنوان Graphical Characters نامیده میشود.
کد PHP:
root@linux-zone:~# grep "^[[:graph:]]" /etc/asterisk/chan_dahdi.conf
%[fax](phones)
Dahdichan = 2
^faxdetect = no
*context = fax
And resources
_[phone-3](phones)
#dahdichan = 3
;pickupgroup = 3,4
#include dahdi-channels.conf
2015
2016
2017
signalling=fxs_ks
usecallerid=yes
callwaiting=yes
8 - Search Printable Characters
به طور مشابه همانند Graphical Characters، برای جستجوی یک خط که با Alphanumeric, Punctuation و Space characters شروع میشوند، grep نیز مفید خواهد بود :
کد PHP:
root@linux-zone:~# grep "^[[:print:]]" /etc/asterisk/extensions.conf
time (aka. descending rotary hunt group).
[globals]
ACMSERVER = 172.16.18.21
CONSOLE = Console/dsp ; Console interface for demo
IAXINFO = guest ; IAXtel username/password
TRUNK = DAHDI/G2
FEATURES =
DIALOPTIONS =
RINGTIME = 20
FOLLOWMEOPTIONS =
PAGING_HEADER = Intercom
group_1 = DAHDI/g1
group_2 = DAHDI/g2
QUEUES = undefined,700
CID_326 = 326
include => dundi-e164-canonical
;
; Just a wrapper for the switch
switch => DUNDi/e164
exten => _91800NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})
^faxdetect = no
*context = fax
And resources
#dahdichan = 3
2015
2016
2017
9 - Search Space Characters
grep همچنین یک قابلیت برای جستجوی یک خطی که با [tab, newline, vertical tab, form feed, carriage return, and space] شروع میشود، دارد :
کد PHP:
root@linux-zone:~# grep "^[[:space:]]" /etc/asterisk/sip.conf
externaddr = 192.168.100.10 ; use this address.
; cause the given audio file to
; be played upon completion of
; an attended transfer.
; DAHDI channel. Defaults to "no". An enabled jitterbuffer will
10 - Search Uppercase Letters
از آپشن های دیگر در grep این هست که همچنین برای جستجوی یک خط که میخواهد با [A-Z] شروع شود، میتوان از Upper-case Latters یا حروف بزرگ استفاده کرد :
کد PHP:
root@linux-zone:~# grep "^[[:upper:]]" /etc/asterisk/extensions.conf
ACMSERVER = 172.16.18.21
CONSOLE = Console/dsp ; Console interface for demo
IAXINFO = guest ; IAXtel username/password
TRUNK = DAHDI/G2
QUEUES = undefined,700
CID_326 = 326
11 - Search Hexadecimal Digits
grep همچنین جستجو میکند یک خطی را که میخواهد با [0-9, A-F و a-f] شروع شده باشد :
کد PHP:
root@linux-zone:~# grep "^[[:xdigit:]]" /etc/asterisk/chan_dahdi.conf
Acallwaiting=yes
acallwaitingcallerid=yes
fcanpark=yes
acancallforward=yes
2015
2016
توضیحاتی که من دادم قابلیت های پیشرفته ای از ابزار grep که خیلی قوی و قدرتمند هستند و برای جستجوی pattern ها در یک فایل استفاده میشوند. همچنین grep یک ابزار مهم برای shell scripting و برنامه نویس ها برای جستجوی pattern در داخل برنامه ها هستش و این ارزشش رو داشت که با آپشن های دیگر و syntax های آن آشنا بشید و وقت تون رو براش بذارید. خوشحال میشیم اگر تجربه جدید در این زمینه کسب کردید با ما به اشتراک بگذارید.
همچنین توصیه میشود مطالعه کنید :
دستور awk در لینوکس برای جستجو و فیلتر کردن عبارات، کلمه و ... (بخش اول)
10 دستور مفید برای Chaining Operators در لینوکس
موفق باشید.
کامنت