وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

چگونه خطوط خالی را در Grep نادیده بگیرم؟

0 3
زمان لازم برای مطالعه: 5 دقیقه


grep مخفف چاپ بیان منظم جهانی. عملکردهای زیادی دارد، به عنوان مثال، جستجو در یک فایل، جستجوی تنها نام یک فایل، grep به صورت بازگشتی و غیره. grep در هنگام جستجو به عنوان یک دستور قدرتمند در مجموعه دستورات لینوکس در نظر گرفته می شود. در بسیاری از موارد، با موقعیت‌هایی مواجه می‌شویم که نیازی به فضا نداریم یا نیاز به حذف شکاف‌های ناخواسته در داده‌هایمان وجود دارد. یکی از چالش برانگیزترین راه های استفاده از grep نادیده گرفتن یا حذف خطوط خالی از فایل متنی است. این روش از طریق مثال های مختلف انجام می شود، پس لطفا بخوانید روی در زیر ببینید که چگونه انجام می شود.

نحو

grep [pattern] [filename]

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

پیش نیاز

برای درک آسان مفید بودن grep، باید اوبونتو را نصب کنیم روی سیستم ما مشخصات کاربر را با ارائه نام کاربری و رمز عبور برای داشتن امتیاز در دسترسی به برنامه های لینوکس ارائه دهید. پس از ورود، برنامه را باز کرده و عبارت a را جستجو کنید terminal یا کلید میانبر ctrl+alt+T را اعمال کنید.

با استفاده از [: blank:] کلمه کلیدی

می توانید یک فایل نیز ایجاد کنید روی ویرایشگر متن یا با یک خط فرمان در terminal. برای ایجاد یک فایل روی را terminalاز جمله دستورات زیر.

$ echo «متنی که باید وارد شود که در آ فایل> filename.txt

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

$ گربه filename.txt

فرض کنید فایلی به نام bfile داریم که پسوند متنی دارد. متن نوشته شده در این فایل ها مانند شکل زیر حاوی فاصله های بین آنهاست.

$ echo “اسم من گوریا است.
من دانش آموز خوبی هستم.
من در کلاس 5 خواندم

من یک برادر و یک خواهر دارم

مادرم خانه دار است
من می خواهم به مدرسه بروم
> bfile.txt

نمایش محتویات فایل مطابق شکل زیر:

$ گربه bfile.txt

چگونه خطوط خالی را در Grep نادیده بگیرم؟

این خطوط خالی را می توان با استفاده از دستور خالی حذف کرد تا فضاهای خالی بین کلمات یا رشته ها نادیده گرفته شود.

$ egrep ‘^[[:blank:]]*[^[:blank:]#]’ bfile.txt

چگونه خطوط خالی را در Grep نادیده بگیرم؟چگونه خطوط خالی را در Grep نادیده بگیرم؟

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

پیشنهاد می‌کنیم بخوانید:  مثال‌های مختلف برای بررسی اینکه آیا نیش دارای رشته فرعی است یا خیر

با استفاده از [: space:]

مثال دیگری از نادیده گرفتن فضا در اینجا توضیح داده شده است. ابتدا اجازه دهید فایل متنی خود را ایجاد کنیم روی را terminal:

$ echo “اسم من همنا است

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

من یک دختر دارم

> file20

بدون ذکر پسوند فایل، ابتدا فایل موجود را با استفاده از دستور نمایش می دهیم.

$ گربه file20

چگونه خطوط خالی را در Grep نادیده بگیرم؟چگونه خطوط خالی را در Grep نادیده بگیرم؟

بیایید ببینیم که چگونه فضای اضافی با استفاده از دستور grep در کنار آن حذف می‌شود [: space:] کلمه کلیدی. گزینه –v grep کمک خواهد کرد print خطوطی که فاقد خطوط خالی و فاصله اضافی هستند که در فرم پاراگراف نیز گنجانده شده است.

$ grep -v ‘^[[:space:]]*$’ file20

خواهید دید که خطوط اضافی حذف شده و خروجی از نظر خط به صورت توالی است. به این ترتیب روش grep –v برای دستیابی به هدف مورد نیاز بسیار مفید است.

چگونه خطوط خالی را در Grep نادیده بگیرم؟چگونه خطوط خالی را در Grep نادیده بگیرم؟

بیایید مثال دیگری را با فایل داده زیر انجام دهیم:

$ echo “grep یک دستور همه کاره است که به کاربران جدید کمک می کند.

برای جستجوی نام فایل ها با کمک دستورات استفاده می شود.

ما می توانیم با استفاده از grep man به دفترچه راهنما برویم

> fileg.txt

خروجی به صورت زیر است:

چگونه خطوط خالی را در Grep نادیده بگیرم؟چگونه خطوط خالی را در Grep نادیده بگیرم؟

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

$ grep -v ‘^[[:space:]]*$’ fileg.txt

چگونه خطوط خالی را در Grep نادیده بگیرم؟چگونه خطوط خالی را در Grep نادیده بگیرم؟

علاوه بر دستورات طولانی، می‌توانیم با دستورات نوشتاری کوتاه در لینوکس و یونیکس نیز کاراکترهای کوتاه‌نویسی grep را در آن پیاده‌سازی کنیم.

$ grep ‘\s’ fileg.txt

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

$ grep ‘\S’ fileg.txt > tmp.txt && mv tmp.txt fileg.txt

در اینجا ما از یک فایل متنی موقت با پسوند متنی به نام tmp برای انتقال محتوای فیلتر شده به فایل اصلی استفاده خواهیم کرد.

با استفاده از ^#

بیایید یک فایل داده جدید برای آزمایش این نسخه نحوی ایجاد کنیم:

$ echo “طراحی گرافیکی بستر خوبی برای طراحی است

پیشنهاد می‌کنیم بخوانید:  چند نام مستعار مفید Bash و روش ایجاد نام مستعار Bash

و ساخت کارت ویزیت لوگو

و پوستر و غیره فتوشاپ

و illustrator برای آن استفاده می شود”> fileb.txt

$ گربه fileb.txt

فایل متنی شامل 4 خط در آن است که بین آنها فاصله وجود دارد. این خطوط فاصله به راحتی با استفاده از یک دستور خاص حذف می شوند.

چگونه خطوط خالی را در Grep نادیده بگیرم؟چگونه خطوط خالی را در Grep نادیده بگیرم؟

$ grep -Ev “^#|^$” fileb.txt

عملیات توسعه یافته منظم توسط –E فعال می شود که به تمام عبارات منظم، به خصوص لوله اجازه می دهد. یک لوله به عنوان یک شرط اختیاری “یا” در هر الگوی استفاده می شود.”^#. این نشان دهنده تطابق خطوط متن در فایلی است که با علامت # شروع می شود. “^$” با تمام فضاهای خالی در متن یا خطوط خالی مطابقت دارد.

چگونه خطوط خالی را در Grep نادیده بگیرم؟چگونه خطوط خالی را در Grep نادیده بگیرم؟

خروجی حذف کامل فضای اضافی بین خطوط موجود در فایل داده را نشان می دهد. در این مثال دیدیم که در دستور “^#” اول می آید، به این معنی که ابتدا متن مطابقت دارد. “^$” بعد از | می آید اپراتور، بنابراین فضای آزاد پس از آن مطابقت داده می شود.

با استفاده از ^$

درست مانند مثالی که در بالا ذکر شد، نتایج مشابهی خواهیم داشت زیرا دستور تقریباً یکسان است. با این حال، الگو برعکس نوشته شده است. File22.txt فایلی است که از آن برای حذف فضاها استفاده می کنیم.

$ echo “نوشتن فنی یک رشته خوب برای مطالعه است

یک رشته تحلیلی است

ما می توانیم چیزهای زیادی در آن یاد بگیریم
نوشتن تجاری مقوله نویسندگی آن است

ممنون از یادگیری”> file22.txt

چگونه خطوط خالی را در Grep نادیده بگیرم؟چگونه خطوط خالی را در Grep نادیده بگیرم؟

$ grep v ‘^$’ file22.txt

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

چگونه خطوط خالی را در Grep نادیده بگیرم؟چگونه خطوط خالی را در Grep نادیده بگیرم؟

سایر دستورات ساده

grep ‘^..’ file22.txt
grep ‘.’ file22.txt

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

نتیجه

حذف شکاف های بی فایده در فایل ها با کمک عبارات منظم یک روش کاملاً آسان برای دستیابی به یک توالی صاف از داده ها و حفظ ثبات است. نمونه ها به صورت مفصل توضیح داده شده اند تا اطلاعات شما در مورد موضوع افزایش یابد.

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-31 00:22:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید