اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

11 دستور پیشرفته Grep در Linux

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    11 دستور پیشرفته Grep در Linux

    آیا شما تا حالا توی وضعیتی بودید، جایی که نیاز داشته باشید به دنبال یک 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) را جستجو کنید از دستور زیر استفاده کنید :
    کد 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 channelDefaults to "no"An enabled jitterbuffer will
    be used only if the sending side can create and the receiving
    side can not accept jitterThe 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 (akadescending 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 channelDefaults 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 در لینوکس


    موفق باشید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 06-19-2021, 04:53 PM.

    #2
    سلام وقتی با دستور stat وضعیت یک فایلی رو بررسی میکنم به من چندین خط خروجی برمیگردونه.
    کد:
    [root@elastix /]# stat /var/log/secure
      File: ‘/var/log/secure’
      Size: 8009            Blocks: 16         IO Block: 4096   regular file
    Device: fd01h/64769d    Inode: 35886352    Links: 1
    Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2017-01-29 04:02:01.933961609 +0330
    Modify: 2017-01-31 10:07:13.179495948 +0330
    Change: 2017-01-31 10:07:13.179495948 +0330
     Birth: -
    چطور میتونم با استفاده از دستور grep خط های File و Change رو با هم فیلتر کنم؟

    کامنت


      #3
      سلام بله با استفاده از فیلترهای زیر میتونید همزمان دو خط رو با دستور grep فیلتر کنید :
      کد PHP:
      [root@linux-zone /]# stat /var/log/secure | grep -e File -e Change
        
      File/var/log/secure’
      Change
      2017-01-31 10:07:13.179495948 +0330
      [root@linux-zone /]#
      [root@linux-zone /]# stat /var/log/secure | grep 'File\|Change'
        
      File/var/log/secure’
      Change
      2017-01-31 10:07:13.179495948 +0330
      [root@linux-zone /]

      کامنت


        #4
        برای پیدا کردن تمام TAB های موجود در یک فایل توسط دستور grep و همچنین شمردن آنها میتوانید به صورت زیر دستور grep را به دستور wc پایپ کنید :
        کد PHP:
        grep --'\t' file-with-tabs.txt wc -

        کامنت

        درباره انجمن منطقه لینوکسی ها

        انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

        شبکه های اجتماعی
        در حال انجام ...
        X