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

سرور مجازی NVMe

Sed Remove Space

0 1
زمان لازم برای مطالعه: 6 دقیقه


حذف فضاهای خالی در اسناد یک مرحله قالب بندی ضروری است که برای بهبود طرح کلی متن و اطمینان از تمیز و مرتب بودن داده ها لازم است. این کمک می کند تا فقط داده های مورد نیاز را ذخیره کنید و از شر فضاهای پیشرو و دنباله دار غیر ضروری خلاص شوید. در زیر چند سناریو وجود دارد که ممکن است نیاز به حذف فضاهای خالی داشته باشید:

  • برای فرمت مجدد کد منبع
  • برای پاکسازی داده ها
  • برای ساده سازی command-line خروجی

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

برای حذف فضاهای خالی از سند خود می توانید از ابزارهای مختلفی مانند awk، sed، cut و tr استفاده کنید. در برخی مقالات دیگر به استفاده از awk در حذف فضاهای سفید پرداخته ایم. در این مقاله، استفاده از sed برای حذف فضاهای خالی از داده ها را مورد بحث قرار خواهیم داد.

شما یاد خواهید گرفت که چگونه از sed استفاده کنید:

  • تمام فضاهای سفید را حذف کنید
  • فاصله های سفید پیشرو را حذف کنید
  • فضاهای خالی انتهایی را حذف کنید
  • هر دو فضای سفید پیشرو و انتهایی را حذف کنید
  • فضاهای چندگانه را با تک فضایی جایگزین کنید

ما دستورات را اجرا خواهیم کرد روی Ubuntu 20.04 Focal Fossa. شما همچنین می توانید همان دستورات را اجرا کنید روی سایر توزیع های لینوکس ما از برنامه پیش فرض اوبونتو ترمینال برای اجرای دستورات استفاده خواهیم کرد. برای باز کردن ترمینال، از میانبر صفحه کلید Ctrl+Alt+T استفاده کنید.

سید چیست

Sed (مخفف ویرایشگر جریان) یک ابزار بسیار قدرتمند و مفید در لینوکس است که به ما امکان می دهد دستکاری های متنی اولیه را انجام دهیم. روی جریان های ورودی این یک ویرایشگر متن نیست، اما به دستکاری و فیلتر کردن متن کمک می کند. جریان های ورودی را دریافت می کند و طبق دستورالعمل کاربر ویرایش می کند و سپس print متن تبدیل شده به صفحه نمایش

با sed می توانید:

  • متن را انتخاب کنید
  • جستجوی متن
  • درج متن
  • متن را جایگزین کنید
  • متن را حذف کنید

استفاده از Sed برای حذف فضاهای سفید

برای حذف فضاهای خالی از متن از دستور زیر استفاده خواهیم کرد:

س/ REGEXP /جایگزینی /پرچم ها

جایی که

  • s/: است بیان جایگزینی
  • REGEXP: یک عبارت منظم برای مطابقت است
  • جایگزینی: رشته جایگزین است
  • پرچم ها: ما فقط از پرچم “g” برای فعال کردن جایگزینی در سطح جهانی استفاده خواهیم کرد روی هر خط

عبارات با قاعده

برخی از عبارات منظم که در اینجا استفاده خواهیم کرد عبارتند از:

  • ^ مسابقات شروع خط
  • $ مسابقات انتهای خط
  • + با یک یا چند مورد از کاراکتر قبلی مطابقت دارد
  • * با صفر یا چند مورد از کاراکتر قبلی مطابقت دارد.
پیشنهاد می‌کنیم بخوانید:  تطبیق الگوی Bash

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

فایل نمونه

مشاهده تمام فضاهای سفید در یک فایل

برای پیدا کردن تمام فضاهای خالی در فایل خود، خروجی دستور cat را به دستور tr به صورت زیر وارد کنید:

$ گربه فایل آزمایشی | tr “” “*” | tr \ t “&”

این دستور جایگزین تمام فضاهای خالی فایل شما می شود

نماد، که تشخیص تمام فضاهای سفید را آسان تر می کند، چه فضاهای سفید تک، چندگانه، پیشرو یا انتهایی باشند.

در اسکرین شات زیر می بینید که فضاهای سفید با علامت * جایگزین شده اند.فایل نمونه با تمام فاصله ها و برگه ها

فایل نمونه با تمام فاصله ها و برگه ها

حذف تمام فضاهای سفید (شامل فاصله ها و برگه ها)

در برخی موارد، شما باید تمام فضاهای خالی را از داده ها حذف کنید، یعنی فاصله های اصلی، انتهایی و فاصله های بین متن ها. دستور زیر تمام فضاهای خالی را از “testfile” حذف می کند. $ گربه فایل آزمایشی | sed -r‘s/\s+//

g توجه داشته باشید:

Sed فایل های شما را تغییر نمی دهد مگر اینکه خروجی را در فایل ذخیره کنید.

خروجی:

Sed Remove SpaceSed Remove Space

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

همچنین می توانید از دستور زیر برای بررسی حذف تمام فضاهای خالی استفاده کنید. $ گربه فایل آزمایشی | sed -r ‘s/\s+//g’ | tr “” “*” | tr\ t

“&”

Sed Remove SpaceSed Remove Space

از خروجی، می توانید ببینید که خیر

نماد که به این معنی است که تمام فضاهای خالی حذف شده است. برای حذف تمام فضاهای خالی اما فقط از یک خط خاص (مثلا خط شماره 2)، می توانید از دستور زیر استفاده کنید: $ گربه فایل آزمایشی | sed

-r

‘2s/\s+//g’

حذف تمام فضاهای سفید پیشرو (از جمله فاصله ها و برگه ها) برای حذف تمام فضاهای سفید از ابتدای هر خط (فضاهای سفید پیشرو)، از دستور زیر استفاده کنید: $ گربه فایل آزمایشی |[ \t]sed

‘s/^

*//’

Sed Remove SpaceSed Remove Space

خروجی:

خروجی زیر پس از اجرای دستور بالا ظاهر شد که نشان می دهد تمام فضاهای سفید اصلی از متن حذف شده اند. همچنین می‌توانید از دستور زیر برای تأیید اینکه تمام فضاهای سفید اصلی حذف شده‌اند استفاده کنید: $ گربه فایل آزمایشی |[ \t]sed ‘s/^ *//’ | tr “” “*” |tr \ t

Sed Remove SpaceSed Remove Space

“&”

از خروجی می بینید که هیچ وجود ندارد نماد در ابتدای خطوط که تأیید می کند که تمام فضاهای سفید اصلی حذف شده اند. برای حذف فضاهای سفید پیشرو فقط از یک خط خاص (مثلاً خط شماره 2)، می توانید از دستور زیر استفاده کنید: $ گربه فایل آزمایشی[ \t]|

sed

‘2s/^

*//’ حذف تمام فضاهای سفید انتهایی (از جمله فاصله ها و برگه ها) برای حذف تمام فضاهای سفید از انتهای هر خط (فضای سفید انتهایی)، از دستور زیر استفاده کنید: $ گربه فایل آزمایشی[ \t]|

sed

‘s/

Sed Remove SpaceSed Remove Space

*$//’

خروجی: خروجی زیر پس از اجرای دستور بالا ظاهر شد که نشان می دهد تمام فضاهای خالی انتهایی از متن حذف شده اند. همچنین می‌توانید از دستور زیر برای تأیید اینکه تمام فضاهای خالی انتهایی حذف شده‌اند استفاده کنید. $ گربه فایل آزمایشی[ \t]| sed ‘s/ *$//’ | tr “” “*”|tr

\ t

Sed Remove SpaceSed Remove Space

“&” از خروجی می بینید که هیچ وجود ندارد نماد در انتهای خطوط که تأیید می کند که تمام فضاهای سفید انتهایی حذف شده اند. برای حذف فضاهای سفید انتهایی فقط از یک خط خاص (مثلاً خط شماره 2)، می توانید از دستور زیر استفاده کنید: $ گربه[ \t]فایل آزمایشی

|

sed

‘2s/ *$//’ هر دو فضای سفید پیشرو و انتهایی را حذف کنید برای حذف تمام فضاهای سفید از ابتدا و انتهای هر خط (یعنی هر دو فضای سفید ابتدایی و انتهایی)، از دستور زیر استفاده کنید: $ گربه[ \t]فایل آزمایشی[ \t]|

sed

پیشنهاد می‌کنیم بخوانید:  Grep برای الگوهای چندگانه یا رشته ها

‘s/^

Sed Remove SpaceSed Remove Space

*//;s/

*$//’ خروجی: خروجی زیر پس از اجرای دستور بالا ظاهر شد که نشان می دهد هر دو فضای خالی اصلی و انتهایی از متن حذف شده اند. همچنین می‌توانید از دستور زیر برای بررسی اینکه هر دو فضای خالی اصلی و انتهایی حذف شده‌اند استفاده کنید. $ گربه[ \t]فایل آزمایشی[ \t]| sed ‘s/^ *//;s/ *$//’ | tr “”“*”| tr

Sed Remove SpaceSed Remove Space

\ t

“&” از خروجی می بینید که هیچ وجود ندارد نماد در ابتدا یا انتهای خطوط که تأیید می کند که تمام فضاهای سفید اصلی و انتهایی حذف شده اند. برای حذف هر دو فضای سفید پیشرو و انتهایی فقط از یک خط خاص (مثلاً خط شماره 2)، می توانید از دستور زیر استفاده کنید: $[ \t]گربه[ \t]فایل آزمایشی

|

sed

‘2s/^

*//;2s/ *$//’ جای خالی چندگانه را با یک فضای سفید جایگزین کنید در برخی موارد، چندین فضای خالی در یک مکان در فایل وجود دارد، اما شما فقط به یک فضای خالی نیاز دارید. شما می توانید این کار را با جایگزینی آن چند فضا با یک فضای واحد با استفاده از sed انجام دهید. دستور زیر همه فضاهای سفید چندگانه را با یک فضای خالی از هر خط در “testfile” جایگزین می کند. $[ ]گربه

فایل آزمایشی

|

Sed Remove SpaceSed Remove Space

sed

‘s/ \+/ /g’ خروجی: خروجی زیر پس از اجرای دستور بالا ظاهر می شود که نشان می دهد چند فضای سفید با یک فضای سفید جایگزین شده است. همچنین می توانید از دستور زیر برای بررسی اینکه آیا چند فضای سفید با یک فضای سفید جایگزین شده است استفاده کنید: $[ ]گربه فایل آزمایشی | sed ‘s/ \+/ /g’ | tr“”“*” |

tr

Sed Remove SpaceSed Remove Space

\ t””&”از خروجی، می توانید تک آهنگ را ببینیدنماد در هر مکان که تأیید می کند که همه رخدادهای چند فضای سفید با یک فضای سفید منفرد جایگزین شده اند. بنابراین، این همه در مورد حذف فضاهای خالی از داده های خود با استفاده از sed بود. در این مقاله، شما یاد گرفتید که چگونه از sed برای حذف تمام فضاهای سفید از داده های خود استفاده کنید، فقط فضای خالی اصلی یا انتهایی را حذف کنید و هر دو فضای سفید پیشرو و انتهایی را حذف کنید. شما همچنین یاد گرفته اید که چگونه چند فضا را با یک فضای واحد جایگزین کنید. اکنون حذف فضاهای خالی از یک فایل حاوی صدها یا هزاران خط برای شما آسان خواهد بود.

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

زمان انتشار: 1402-12-31 10:50:04

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

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

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