اطلاعیه

بستن
No announcement yet.

آموزش کامل دستور grep در لینوکس به همراه 12 مثال عملی

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

    آموزش کامل دستور grep در لینوکس به همراه 12 مثال عملی

    آیا شما تا به حال چنین وظیفه ای داشته اید که بخواهید دنبال یک الگو یا string خاص در یک فایل بگردید در حالی که هیچ ایده ای ندارید که جستجوی خود را از آنجا شروع کنید. دستور grep در لینوکس اینجاست تا کمک تان کند.
    دستور grep در لینوکس



    همچنین توصیه میشود مطالعه کنید :

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

    دستور grep در لینوکس برای جستجوی چندین پترن، کلمه، عبارت

    تفاوت بین Egrep - Grep و Fgrep در لینوکس چیست؟



    grep یک جستجو گر قدرتمند فایل میباشد که روی هر توزیع از لینوکس موجود است. اگر به هر دلیلی روی سیستم تان نصب نبود شما میتوانید آن را به آسانی و از طریق ابزار مدیریت پکیج yum روی RHEL/Centos/Fedora و apt-get روی سیستم های Debian/Ubuntu نصب کنید :
    کد PHP:
    sudo apt-get install grep         #Debian/Ubuntu

    sudo yum install grep             #RHEL/CentOS/Fedora 
    در اینجا من نمونه های کاربردی و مفید از دستور grep برای شما توضیح میدهم :



    1 - جستجو و پیدا کردن فایل ها

    مثلا فرض کنید که روی سیستم خود ubuntu دارید و قصد دارید اسکریپت پایتون خود را تست کنید در اینترنت به دنبال منابع میگردید که متوجه میشوید دو ورژن متفاوت از پایتون موجود هستند و نمیدانید که پایتون موجود روی سیستم عامل شما که توسط ubuntu نصب شده چه ورژنی است. به سادگی با اجرای دستور زیر میتوانید ورژن پایتون نصب شده روی سیستم تان رو متوجه شوید :
    کد PHP:
    # dpkg –l | grep –i python 
    نمونه خروجی دستور :
    کد PHP:
    ii  python2.7                        2.7.3-0ubuntu3.4                    Interactive high-level object-oriented language (version 2.7)
    ii  python2.7-minimal                2.7.3-0ubuntu3.4                    Minimal subset of the Python language (version 2.7)
    ii  python-openssl                   0.12-1ubuntu2.1                     Python wrapper around the OpenSSL library
    ii  python
    -pam                       0.4.2-12.2ubuntu4                   A Python interface to the PAM library 
    ابتدا دستور dpkg -l را اجرا میکنید که پکیج های deb.* موجود روی سیستم تان را لیست میکند سپس خروجی آن را به دستور grep -i python پایپ '|' مکنید که با این دستور در خروجی قبلی هر چیزی که در آن python دارد را فیلتر کرده و برای شما نمایش میدهد. آپشن i- به معنای این است که در سرچ حروف بزرگ و کوچک لحاظ نشود از آنجایی که دستور grep به حروف بزرگ و کوچک حساس (case-sensitive) میباشد. استفاده از اپشن i- یک عادت خوب است مگر اینکه شما دقیقا بخواهید به حروف کوچک یا بزرگ دقت شود.



    2 - جستجو و فیلتر فایل ها

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

    شما با سرور وب آپاچی تان مشکلاتی دارید و با توجه به اینکه سوال خود را در انجمن های زیادی روی اینترنت قرار دادید فرد مهربانی به شما جواب میدهد و از شما میخواهد که محتوای فایل /etc/apache2/sites-available/default-ssl/ را در پست قرار دهید. آیا به نظرتان راحتر نیست تا خط های کامند شده در فایل را حذف کنید تا برای فردی که میخواهد کمک کند و همچنین هر کس دیگری که بعدا پست شما را میخواند راحتر باشد شما میتوانید با اجرای دستور زیر خط های comment شده را قلم بگیرید :
    کد PHP:
    # grep –v “#”  /etc/apache2/sites-available/default-ssl 
    آپشن v- به grep میگوید که خروجی را برعکس کند یعنی به جای نمایش لاین های match با دستور مخالف آن عمل کنند و خطایی که با عبارت match نیستند را نمایش دهد که در دستور بالا در حقیقت خط های که # ندارند را نمایش میدهد.



    3 - پیدا کردن تمام فایل های فقط mp3

    دستور grep برای فیلتر کردن از stdout بسیار مفید است. مثلا در نظر بگیرید که یک پوشه کامل از فایل های موزیک و به فرمت های متفاوتی دارید شما میخواهید تمامی فایل های mp3.* از هنرمند jayz را پیدا کنید اما شما هیچ کدام از ترک های remixed را نمیخواهید با استفاده از دستور find و 2 بار پایپ '|' به دستور grep میتوانید به هدف خود برسید :
    کد PHP:
    # find . –name “*.mp3” | grep –i JayZ | grep –vi “remix” 
    در این مثال با استفاده از دستور find تمامی فایل های با فرمت mp3 پیدا میشوند سپس با پایپ کردن به دستور grep -i تمامی فایل هایی که نام jayz در آنها است فیلتر میشوند و با کمک پایپ دوم به دستور grep -vi تمامی فایل هایی که در ان عبارت remix نباشد برگردانده میشود.



    4 - نمایش تعدادی از خط ها قبل و بعد از یک عبارت سرچ شده

    آپشن های دیگری مانند A- و ****B- وجود دارند که به تعداد مشخص شده خط های قبل و بعد از عبارت سرچ شده را نمایش میدهد. آپشن A- برای بعد و آپشن **B- برای قبل مورد استفاده قرار میگیرد :
    کد PHP:
    # ifconfig | grep –A 4 eth0
    # ifconfig | grep  -B 2 UP 


    5 - نمایش تعدادی از خط ها در محدوده عبارت سرچ شده

    آپشن c- شبیه به آپشن قبل میباشد با این تفاوت که به جای نمایش خط های قبل و یا خط های بعد خطوط در 2 جهت را نمایش میدهد. مثلا دستور زیر 2 خط قبل و 2 خط بعد از عبارت سرچ شده lo را نمایش میدهد :
    کد PHP:
    # ifconfig | grep –C 2 lo 


    6 - شمارش تعداد match ها

    مشابه به اینکه شما دستور grep را به دستوری مانند wc (شمارنده کلمه word count) پایپ '|' کنید اپشنی در خود grep موجود است که میتواند همان عمل را برای شما انجام دهد :
    کد PHP:
    # ifconfig | grep –c inet6 


    7 - جستجوی فایل ها از طریق عبارت داده شده

    آپشن n- یکی از مفید ترین گزینه ها برای فایل های debug مربوط به error های در حین compile میباشد. این گزینه شماره line مربوط به عبارت داده شده در فایل را نمایش میدهد :
    کد PHP:
    # grep –n “main” setup..py 


    8 - جستجوی یک عبارت در تمامی پوشه ها

    اگر بخواهید عبارتی را در دایرکتوری جاری و همچنین تمامی subdirectories جستجو کنیم باید از آپشن r- برای سرچ به صورت recursively استفاده کنیم :
    کد PHP:
    # grep –r “function” * 


    9 - جستجو برای کل یک pattern (به صورت کامل)

    با استفاده از آپشن w- در کامند grep میتوانیم برای کل یک pattern یا عبارت جستجو کنیم. به طور مثال استفاده از دستور زیر که خطی که شامل pattern موجود در کوتیشن (") میباش را نمایش خواهد داد :
    کد PHP:
    # ifconfig | grep –w “RUNNING” 
    از طرف دیگر اگر کامند زیر را اجرا کنید هیچ جوابی به شما برنمیگرداند. چون دقیقا pattern با عبارت موجود در کوتیشن (") وجود ندارد :
    کد PHP:
    # ifconfig | grep –w “RUN” 


    10 - جستجوی یک عبارت در فایلی Gzipped شده

    حالا بعضی از مشتقات grep را بررسی میکنیم. اول از zgrep شروع میکنیم که دستور شبیه به zcat میباشد و برای فایل های gzipped مورد استفاده قرار میگیرد. همانند grep آپشن های یکسانی دارد و به شیوه یکسان مورد استفاده قرار میگیرد :
    کد PHP:
    # zgrep –i error /var/log/syslog.2.gz 


    11 - مطابقت عبارات منظم در فایل ها

    egrep یکی از مشتقات دستور grep میباشد که در حقیقت اختصاری از Extended Global Regular میباشد. این دستور عبارت اضافه (meta-characters) همانند + ? | و () را تشخیص میدهد. egrep دستوری بسیار مفید برای جستجوی فایل های سورس و دیگر بخش های code میباشد. همچنین به جای آن میتوان از دستور grep -E استفاده نمود :
    کد PHP:
    # grep –E 


    12 - جستجو برای یک عبارت ثابت (Fixed)

    fgrep یک فایل یا لیستی از فایل ها را برای یک عبارت ثابت جستجو میکند که مشابه grep -F میباشد. یکی از رایج ترین شیوه های استفاده از دستور fgrep پاس دادن یک فایل از الگوها (pattern) به آن میباش :
    کد PHP:
    fgrep –f file_full_of_patterns.txt file_to_search.txt 
    این مطلب نقطه شروعی بر دستور grep میباشد. اما همانطور که میدانید دستور grep قابلیت های بیشمار دیگری به منظور اهداف گوناگون را داراست. از grep میتوان در نوشتن cron job های قدرتمند همچنین shell script های بزرگ استفاده کرد. خلاق باشید و با مثال های دیگر این دستور در صفحه man آن کار کنید تا در مواقع ضرورت برای اهداف تان بتوانید به نحو احسنت از این دستور بتوانید استفاده کنید.


    همچنین توصیه میشود مطالعه کنید :

    دستور awk در لینوکس برای جستجو و فیلتر کردن عبارات، کلمه و ... (بخش اول)

    10 دستور مفید برای Chaining Operators در لینوکس


    موفق باشید
    محمد هابیلی
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-22-2021, 01:50 PM.

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

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

شبکه های اجتماعی

ایمیل مدیریت

Habili@linux-zone.org

در حال انجام ...
X