از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش استفاده از دستور grep در لینوکس + مثال ها
سرفصلهای مطلب
این چاپ بیان منظم جهانی یا grep فرمان خطوط خاصی را که حاوی یک الگوی خاص در یک فایل است جستجو می کند. این برای بررسی سریع وجود یک ورودی مفید است، به خصوص برای موارد بزرگ مانند فایل های گزارش.
میتوانید گزینههای مختلفی را برای اصلاح رفتار فرمان برای کارهای خاص، مانند جستجوی معکوس و جستجوی چند کلمه کلیدی، اضافه کنید. به دلیل انعطاف پذیری، grep یک ابزار ضروری برای مدیریت سرور خصوصی مجازی لینوکس (VPS) شما است.
در این مقاله روش استفاده از دستور grep در لینوکس از جمله نحو و گزینه های آن توضیح داده می شود. همچنین برخی از برنامه های کاربردی دنیای واقعی آن را برای مدیریت فایل ها در سیستم خود خواهید آموخت.
نحو دستور Grep
نحو اصلی grep به صورت زیر است:
grep [options] pattern [FILE]
در اینجا توضیحی درباره معنای هر عنصر وجود دارد:
- grep – نام ابزار.
- گزینه ها – آرگومان هایی که رفتار دستور grep را تغییر می دهند.
- الگوی – کلمه کلیدی که می خواهید جستجو کنید.
- فایل – موردی که می خواهید محتوای آن را جستجو کنید.
در بخش بعدی، متداول ترین گزینه ها و مثال های استفاده در دنیای واقعی آنها را توضیح خواهیم داد.
را بخوانید راهنمای grep برای کسب اطلاعات بیشتر در مورد همه گزینه ها از طرف دیگر، این راهنمای ابزار را در خود بررسی کنید command-line رابط با وارد کردن:
grep --help
به یاد داشته باشید که باید از امتیاز “خواندن” فایلی که می خواهید با grep بررسی کنید، داشته باشید. برای کسب اطلاعات بیشتر در مورد مجوزها در لینوکس و روش تغییر آنها، آموزش chmod utility ما را بخوانید.
با استفاده از دستور grep لینوکس
در این بخش، استفاده رایج از ابزار grep را مورد بحث قرار خواهیم داد. اگر از VPS استفاده می کنید، دستور را از طریق یک کلاینت SSH مانند PuTTY اجرا کنید. برای رایانه های رومیزی، ترمینال لینوکس را با فشار دادن باز کنید Ctrl + Alt + T.
جستجوی اساسی
اساسی ترین کاربرد grep فیلتر کردن فایل های متنی، خروجی خطوطی است که حاوی یک کلمه خاص هستند. برای انجام این کار، این دستور را بدون گزینه ای مانند این دستور اجرا کنید:
grep keyword file
همچنین میتوانید چندین نام فایل را فهرست کنید:
grep pattern file1 file2 file3
اگر می خواهید از عبارتی به عنوان رشته جستجو استفاده کنید، الگو را با استفاده از علامت نقل قول قرار دهید. به عنوان مثال، این دستور خطوط حاوی توزیع لینوکس در hostingertxt فایل نمونه:
grep "Linux distro" hostinger.txt
توجه داشته باشید که نحو فقط در صورتی کار می کند که فایل ورودی در دایرکتوری فعلی شما باشد. اگر در مکان دیگری است، مسیر کامل را مانند زیر مشخص کنید:
grep pattern /path/to/the/file.txt
مهم! از آنجایی که دستورات لینوکس مانند grep به حروف کوچک و بزرگ حساس هستند، به حروف بزرگ در الگوی جستجو و نام فایل خود توجه کنید.
جستجوی بازگشتی
شما می توانید به صورت بازگشتی همه فایل ها و زیر شاخه های داخل یک پوشه را با استفاده از جستجو جستجو کنید -r گزینه در اینجا نحو است:
grep -r keyword path/to/a/folder
به عنوان مثال، ما یک آموزش/محتوا/لینوکس دایرکتوری حاوی دو پوشه به نام دستورات و آب و برق. برای جستجوی کلمه VPS در تمام فایل های داخل این پوشه ها، به سادگی grep را اجرا کنید روی مسیر والد:
grep -r VPS tutorial/content/linux
دستور grep خطوط منطبق از هر فایل و پوشه ای را فهرست می کند آموزش/محتوا/لینوکس دایرکتوری
نوشته ها را در اطراف خط منطبق چاپ کنید
Grep به شما امکان می دهد خطوط خروجی را بعد و قبل از ورودی مطابقت ایجاد کنید تا زمینه بیشتری را در اختیار شما قرار دهد. برای انجام این کار، این گزینه ها را به همراه تعداد خطوط مجاور که می خواهید اضافه کنید print:
- الف – خط را پس از مدخل منطبق چاپ می کند.
- ب – خروجی خط را قبل از ورودی تطبیق می دهد.
- سی – خطوط را هم بعد و هم قبل از ورود نمایش می دهد.
برای مثال، دستور grep زیر را اجرا کنید print یک ورودی بعد از خطوط مطابق:
grep -A1 pattern file
جستجوی بدون حروف بزرگ
بهطور پیشفرض، grep الگوهای با حروف مختلف را بهعنوان رشتهای متفاوت در نظر میگیرد. به عنوان مثال، شما نمی توانید جستجو کنید گرپ و GREP با استفاده از کلمه کلیدی grep. می توانید این رفتار را با افزودن عبارت غیرفعال کنید من گزینه:
grep -i keyword file
اگر بخواهیم کلمه را جستجو کنیم vps و تفاوت های حروف کوچک را نادیده بگیرید، دستور زیر را اجرا کنید:
grep -i vps hostinger.txt
جستجوی معکوس
را اضافه کنید -v گزینه ای برای فرمان grep شما مانند این نحو برای فعال کردن جستجوی معکوس، چاپ خطوط غیر منطبق:
grep -v keyword file
به عنوان مثال، این دستور فقط آن خطوط را بدون کلمه VPS از the نمایش می دهد hostingertxt فایل:
grep -v VPS hostinger.txt
نمایش شماره خطوط
اگر با فایلهای بزرگی مانند گزارش کار میکنید، دادههای خروجی میتواند بسیار طولانی باشد. بررسی موقعیت الگو را دشوار می کند. برای سادهتر کردن کار، میتوانید شمارههای خطوط را با علامت نشان دهید -n گزینه ای مانند این:
grep -n keyword file
به عنوان مثال، این دستور خواهد بود print خطوط از auth.log حاوی کلمه کاربر ناشناس و تعداد آنها:
grep -n "unknown user" auth.log
خطی که با عدد یک شروع می شود به این معنی است که اولین ورودی از است auth.log فایل و غیره روی.
استفاده از grep با عبارات منظم
عبارات منظم، یا regex، رشته هایی از کاراکترها هستند که یک الگوی جستجو را تعریف می کنند. برای یافتن یک پرس و جو بسیار خاص بدون نیاز به فهرست کردن کلمات کلیدی به صورت جداگانه مفید است. در اینجا چندین نماد regex و نشانگرهای آنها آورده شده است:
- . – با هر شخصیت منطبق است.
- * – نشان دهنده صفر یا بیشتر از کاراکتر قبلی است.
- + – یک یا چند کاراکتر قبلی را نشان می دهد.
- ? – صفر یا یکی از کاراکترهای قبلی را نشان می دهد.
- ^ – شروع یک الگوی regex را نشان می دهد.
- $ – پایان یک الگوی regex را نشان می دهد.
- () – الگوها را گروه بندی می کند.
این عبارات با قاعده رفتار متفاوتی دارند چه از آن استفاده کنید بیان منظم گسترش یافته (ERE) با -ای گزینه یا پیش فرض بیان منظم پایه (BRE). برای اطلاعات بیشتر، در مورد تفاوت بین BRE و ERE.
به عنوان مثال، اگر می خواهید الگوهایی مانند abc و acc، دستور زیر را اجرا کنید. نقطه (.) نماد با هر کاراکتری مطابقت دارد:
grep -E 'a.c' file
این ^ و $ نمادها به شما امکان می دهند خطوطی را جستجو کنید که با یک الگوی خاص شروع یا ختم می شوند. این مثال دستور grep را در نظر بگیرید:
grep -E '^pattern' file
دستور بالا با خطوطی که با آن شروع می شوند مطابقت دارد الگوی، مانند الگو یک رشته متن است. در همین حال، موارد زیر برای ورودی هایی که به پایان می رسند جستجو می کنند الگوی:
grep -E 'pattern$' file
همچنین می توانید چندین نماد regex را برای بهبود جستجوی خود برای نتیجه خاص تر ترکیب کنید. به عنوان مثال، این دستور به دنبال خطوط حاوی هر کلمه ای که با an شروع می شود، می گردد اچ و به پایان می رسد آر:
grep '^H.*R$' 1.txt
الگوهای متعدد را جستجو کنید
شما می توانید چندین کلمه کلیدی را با استفاده از یک دستور grep جستجو کنید. ساده ترین راه برای انجام این کار، فهرست کردن کلمات کلیدی در داخل گیومه است (‘) با علامت عقب جدا شده است (\) و لوله ها (|). در اینجا نحو به نظر می رسد:
grep 'pattern1\|pattern2\|pattern3' file
در این دستور، grep از BRE استفاده می کند زیرا ما هیچ گزینه ای اضافه نمی کنیم. برای جلوگیری از تفسیر لوله به عنوان الگوی درخواست شده، با استفاده از بک اسلش از آن فرار می کنیم.
همچنین می توانید چندین الگو را بدون اسلش با اضافه کردن آن جستجو کنید -ای گزینه ای برای فعال کردن عملکرد ویژه لوله مانند موارد زیر:
grep -E 'pattern1|pattern2|pattern3' file
به جای گزینه -E، می توانید این کار را با استفاده از egrep دستور:
egrep 'pattern1|pattern2|pattern3' file
اگر می خواهید الگوها را جداگانه مشخص کنید، از آن استفاده کنید -e گزینه ای برای هر عبارت جستجو در اینجا دستور دستور است:
grep -e pattern1 -e pattern2 -e pattern3 file
همه این تغییرات دستور grep نتیجه یکسانی دارند. بنابراین، یکی را بر اساس انتخاب کنید روی ترجیحات شما
شمارش مسابقات
چندین کار مدیریت سیستم ممکن است از شما بخواهد که بررسی کنید چند خط در یک فایل دارای الگوی منطبق هستند. به عنوان مثال، این برای شمارش تلاشهای ورود از یک آدرس IP خاص در یک فایل گزارش مفید است.
برای بررسی اینکه چند خط دارای یک الگو هستند، از عبارت استفاده کنید -ج یا – شمارش گزینه ای مانند این:
grep -c pattern file
با این حال، -ج گزینه خطوط منطبق را شمارش می کند، نه وقوع الگو. اگر می خواهید آن را بررسی کنید، از آن استفاده کنید -o گزینه و ارسال آن به WC دستور به این صورت:
grep -o pattern file | wc -l
به جای نمایش کل خط، -o گزینه فقط رخدادهای الگو را چاپ می کند که دستور wc آنها را شمارش می کند. در مورد استفاده از لوله بحث خواهیم کرد (|) در بخش بعدی.
توجه داشته باشید که این دستور انواع دیگر کلمه کلیدی را نیز می شمارد. به عنوان مثال، اگر از الگو استفاده کنید اتصال، grep مواردی مانند آن را بررسی می کند دوباره وصل شوید، متصل است، اتصال، و قطع شده است.
اگر می خواهید دقیقاً کلمه منطبق را بشمارید، مرزهای کلمه را در ابتدا و انتهای کلمه کلیدی خود اضافه کنید. در اینجا یک مثال است:
grep -o '\bpattern\b' file
grep را با دستورات دیگر ترکیب کنید
علاوه بر فایل ها و دایرکتوری ها، می توانید داده های ورودی را از دستور دیگری با استفاده از grep فیلتر کنید. برای انجام این کار، آنها را با استفاده از یک لوله (|) اینطوری:
command | grep pattern
در قطعه، لوله خروجی را از اولین دستور به grep هدایت می کند و نتیجه را بر اساس فیلتر می کند. روی کلمه کلیدی در اینجا یک مثال استفاده در دنیای واقعی آمده است:
ls | grep '\.txt$'
این ls دستور محتوای فهرست فعلی شما را فهرست می کند. سپس، grep فرمان خروجی، چاپ را فیلتر می کند TXT فایل های داخل پوشه در اینجا یک مثال دیگر وجود دارد:
ps aux | grep "process_name"
این ps aux دستور تمام فرآیندهای در حال اجرا در سیستم شما را فهرست می کند. سپس، ابزار grep یک مورد خاص را از لیست بر اساس جستجو می کند روی نام آن
بسته به روی وظیفه شما، شما می توانید grep را با ابزارهای دیگر ترکیب کنید. هاستینگer کاربران میزبان VPS که مطمئن نیستند از کدام برنامه های کاربردی استفاده کنند، می توانند از دستیار هوش مصنوعی ما استفاده کنند. کدی، برای کمک به توضیح و تولید فرمان کامل.
مثلا بپرس کدی“من میخواهم تمام سرویسها را در VPS اوبونتو فهرست کنم و از ابزار grep برای فیلتر کردن خروجی استفاده کنم و فقط سرویسهای مربوط به NGINX را چاپ کنم. فرمان کامل را ایجاد کنید.»
سپس دستور مناسب برای سیستم و نیازهای شما را می نویسد.
تغییر مسیر خروجی
مدیران سیستم ممکن است نیاز داشته باشند نتایج فرمان grep را برای پردازش بیشتر یا بایگانی ذخیره کنند. یک راه آسان برای انجام این کار، هدایت خروجی به یک فایل متنی با استفاده از بزرگتر از (>) نماد. در اینجا نحو است:
grep pattern file > target_file.txt
اگر فایل هدف وجود نداشته باشد، دستور grep به طور خودکار آن را در فهرست کاری فعلی شما ایجاد می کند.
برای بررسی اینکه آیا grep خروجی را به درستی ذخیره می کند، print محتوای فایل مورد نظر با استفاده از گربه دستور به این صورت:
cat target_file.txt
نتیجه گیری
این grep دستور به شما امکان می دهد از یک الگو برای یافتن خطوط از یک فایل استفاده کنید. نحو اصلی آن است فایل الگوی grep، اما می توانید گزینه های مختلفی را برای اصلاح جستجو بر اساس اضافه کنید روی نیازهای شما
به عنوان مثال، را اضافه کنید -r گزینه ای برای جستجوی بازگشتی الگوها از فایل ها و زیر شاخه های داخل یک پوشه. در حالی که grep به طور پیشفرض به حروف بزرگ و کوچک حساس است، میتوانید این تنظیم را با استفاده از پرچم -i غیرفعال کنید تا یک الگوی منطبق را بدون توجه به حروف بزرگ آن پیدا کنید.
شما همچنین می توانید print خطوط غیر منطبق با استفاده از -v گزینه و اضافه کنید -n گزینه ای برای نشان دادن شماره دنباله آنها. برای الگوهای جستجوی پیچیده تر، می توانید از نمادهای عبارت منظم استفاده کنید.
در استفاده در دنیای واقعی، ممکن است لازم باشد grep را با دستورات دیگر ترکیب کنید و نتایج جستجو را به فایلی هدایت کنید. backup. از آنجایی که این ابزار بسیار متنوع است، استفاده کنید کدی برای نوشتن دستور کامل
روش استفاده از دستور grep سوالات متداول
دستور grep برای چیست؟
دستور grep معمولاً برای جستجوی خطوط حاوی یک کلمه کلیدی خاص در یک فایل استفاده می شود. همچنین برای فیلتر کردن خروجی ابزارهای دیگر مفید است و فقط مواردی را با یک الگوی خاص چاپ می کند. می توانید این کار را با وارد کردن دستور grep انجام دهید.
رایج ترین گزینه های مورد استفاده در grep کدامند؟
یکی از رایج ترین گزینه ها در grep شامل من، که حساسیت حروف کوچک و بزرگ را در عبارت جستجوی شما نادیده می گیرد. یکی دیگر از گزینه های محبوب این است -r، به شما امکان می دهد تمام فایل ها و پوشه ها را در یک فهرست جستجو کنید.
آیا می توانم با استفاده از grep یک الگو را در چندین فایل یا دایرکتوری جستجو کنم؟
بله، می توانید یک کلمه کلیدی را در چندین فایل یا دایرکتوری با فهرست کردن آنها جستجو کنید. وارد کنید الگوی grep file1.txt file2.txt برای پیدا کردن یک الگو در فایل ها برای بررسی کلمات کلیدی از چندین دایرکتوری، از -r گزینه ای که مسیر والدین آنها دنبال می شود.
چگونه خطوطی را جستجو کنم که با یک الگو مطابقت ندارند؟
به print خطوطی که با یک الگو مطابقت ندارند، آن را اضافه کنید -v گزینه ای برای دستور grep شما. عملکرد جستجوی معکوس را فعال می کند و همه ورودی ها را از فایلی که حاوی کلمه کلیدی نیست خروجی می دهد.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1403-12-28 11:38:16