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

سرور مجازی NVMe

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

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


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

یکی از بسیاری از دستورات ضروری لینوکس نیز دستور sed است که نقشی حیاتی در دستکاری فایل ها ایفا می کند. این برای اهداف بسیاری استفاده می شود؛ برخی از اصلی ترین آنها به شرح زیر است.

آن خط خاص را که با الگوهای داده شده مطابقت دارد حذف یا حذف کنید.

  • حذف خطوط با عبارات منظم.
  • مستقر روی موقعیت یک فایل، یک خط خاص را حذف کنید.

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

چگونه با استفاده از دستور SED خطوط را از یک فایل حذف کنم؟

ما در این مقاله از دستور sed بدون -i استفاده خواهیم کرد زیرا یک مقاله نمایشی است. روش مشابهی گزینه “dry run” است که تمام مقادیر فایل را بدون ایجاد تغییر نشان می دهد.

با استفاده از دستور sed می توانیم خطوط را بسته به آن حذف کنیم روی محیط با استفاده از -i.

برای نمایش دستور sed فایلی به نام LinuxhintOS.txt ایجاد می کنیم. برای اطلاع رسانی بهتر این شماره خطوط را در مطالب زیر قرار می دهیم.

حذف خطوط از یک فایل مبتنی بر روی موقعیت

این بخش با استفاده از دستور sed برای حذف خطوط از فایل مبتنی بر “LinuxhintOS.txt” توضیح می دهد. روی موقعیت آن

ابتدا با استفاده از دستور زیر فایل را باز کنید:

گربه ~/<نام پوشه>/<نام فایل>

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

حالا دستور زیر را برای حذف خط اول اجرا کنید:

sed ‘Nd’ فایل

در دستور بالا:

ن– خط N ام در یک فایل

D– حذف فایل

بنابراین، اجازه دهید این دستور را در مثال خود اجرا کنیم تا خط دهم را از فایل متنی حذف کنیم:

سی دی اسناد

sed ’10d’ LinuxhintOS.txt

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

آخرین خط را از یک فایل حذف کنید

اگر مجبور باشیم آخرین خط را از فایل حذف کنیم، به جای ‘N’ در نحو استفاده شده در بالا، از ‘$’ استفاده می کنیم. در اینجا $ نشان دهنده آخرین خط است.

sed ‘$d’ فایل

پس از این، فایل ما به چیزی شبیه به این تغییر می کند.

پیشنهاد می‌کنیم بخوانید:  دستور Bash eval

خط اول و آخرین خط را با هم حذف کنید

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

sed ‘Nd;$d’ نام فایل

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

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

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

محدوده ای از خطوط را حذف کنید

دستور sed می تواند خطوط هر محدوده ای را حذف کند. برای این، ما فقط باید شماره خطوط “حداقل” و “حداکثر” را وارد کنیم.

در این مثال، خطوطی از 4 تا 7 را حذف می کنیم.

sed ‘4,7d’ فایل

پس از حذف این محدوده از خطوط، فایل ما به این شکل خواهد بود.

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

چند خط را حذف کنید

sed همچنین می تواند چندین خط را در یک مجموعه حذف کند. همانطور که می بینید در این مثال سطرهای سوم، ششم، هشتم و آخر را حذف کردیم.

sed ‘3d;6d;8d;$d’ فایل

هنگام اعمال دستور sed نوشته شده در بالا، تغییرات زیر در فایل ما ‘LinuxhintOS.txt’ رخ می دهد.

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

حذف خطوطی غیر از خط مشخص شده یا محدوده مشخص شده خطوط

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

از این فایل، بقیه خطوط را جدا از اعداد 4 تا 7 حذف می کنیم.

سد ‘4،7! d’ فایل

در اینجا، علامت “!” نشان می دهد که ما نباید خط این شماره خاص را از فایل حذف کنیم.

! – برای حفظ تعداد مشخصی از خطوط از فایل استفاده می شود

پس از این، فایل ما چیزی شبیه به این خواهد شد:

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

خطوط خالی یا خالی را حذف کنید

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

sed ‘/^$/d’ فایل

از آنجایی که هیچ خط خالی یا خالی در فایل ما وجود ندارد، هیچ تغییری رخ نداده است:

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

خطوط را از فایل بر اساس الگو حذف کنید

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

حذف خطوطی که حاوی الگو هستند

در مثال، دستور زیر خطوط مطابق با الگوی “System” را از فایل “LinuxhintOS.txt” حذف می کند.

sed ‘/System/d’ فایل

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

بنابراین، ما باید آن خطوطی را که دارای “در دسترس نیستند” حذف کنیم. به همین دلیل دستور زیر را اجرا می کنیم:

sed ‘/در دسترس نیست/d’ LinuxhintOS.txt

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

حذف خطوطی که شامل یک یا چند رشته هستند

از طریق دستور sed، می‌توانیم خطوط مطابق با الگوی «به‌روزرسانی نشده» یا «در دسترس نیست» را از فایل «LinuxhintOS.txt» حذف کنیم و این دستور چیزی شبیه به این است:

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

sed ‘/به روز نشده\|در دسترس نیست/d’ LinuxhintOS.txt

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

حذف خطوطی که با یک کاراکتر خاص شروع می شوند

ما می توانیم تمام خطوطی که با هر کاراکتری شروع می شوند را از طریق دستور sed حذف کنیم. ما یک فایل جدید به نام ‘LinuxhintOS.txt’ با محتوای زیر ایجاد کرده ایم:

پیشنهاد می‌کنیم بخوانید:  روش بررسی وجود آرگومان ورودی در اسکریپت Bash Shell

چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟چگونه خطوط را با استفاده از دستور SED از یک فایل حذف کنم؟

دستور sed زیر تمام خطوطی را که با کاراکتر A شروع می شوند حذف می کند.

sed ‘/^A/d’ فایل

ما چنین خطوطی را از فایل خود حذف می کنیم که با ‘A’ و ‘L’ شروع می شوند. که برای آن از دستور زیر استفاده خواهیم کرد.

sed ‘/^[AL]/d’ فایل

با استفاده از sed، تمام خطوطی که با “A” شروع می شوند و با رشته “Linux” ختم می شوند را حذف می کنیم.

sed ‘/^(A).*(Linux)/d’ فایل

حذف خطوطی که به یک کاراکتر مشخص ختم می شوند

این دستور sed تمام خطوطی که با “m” ختم می شوند را حذف می کند.

sed ‘/m$/d’ فایل

دستور sed زیر خطوطی را که به هر دو کاراکتر «M» و «X» ختم می‌شوند حذف می‌کند.

sed ‘/[xm]$/d’ فایل

خطوط نویسه‌هایی که به «M» و «X» ختم می‌شوند از فایل ما حذف می‌شوند. سپس فایل ما به این شکل خواهد بود.

حذف تمام خطوطی که با حروف بزرگ شروع می شوند

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

sed ‘/^[A-Z]/d’ فایل

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

حذف یک خط الگوی منطبق با یک محدوده مشخص

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

این مثال فقط خطوط با الگوهای لینوکس را از فایل بین 1 تا 6 خط حذف می کند.

sed فایل ‘1,6{/Linux/d;}

پس از اعمال دستور، فایل ما ‘sed – demo-1.txt’ چیزی شبیه به این خواهد شد.

سطر دوم را فقط در صورتی با دستور sed حذف می کنیم که حاوی الگوی openSUSE باشد.

sed ‘2{/openSUSE/d;}’ فایل

دستور مناسب خط دوم را از فایل ما ‘sed – demo-1.txt’ حذف می کند زیرا دارای الگوی خاصی از “openSUSE” است.

دستور مناسب خط دوم را از فایل ما ‘sed – demo-1.txt’ حذف می کند زیرا دارای الگوی خاصی از “openSUSE” است.

همچنین می‌توانیم خطی را که با الگوی سیستم و خط زیر در فایل مطابقت دارد با استفاده از دستور sed حذف کنیم.

sed ‘/System/{N;d;}’ فایل

خطوط دارای الگوهای خاص را حذف کنید

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

sed ‘/Centos/,$d’ فایل

حذف خطوطی که حاوی اعداد / ارقام هستند

با دستور sed که در زیر نوشته شده است، می توانیم تمام خطوط حاوی “digit” را حذف کنیم.

sed ‘/[0-9]/d’ فایل

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

sed ‘/^[0-9]/d’ فایل

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

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

sed ‘/[0-9]$/d’ فایل

حذف خطوط حاوی حروف الفبا از یک فایل

با دستور sed، تمام خطوط فایل ‘LinuxhintOS.txt’ را که حاوی هر کاراکتر الفبایی هستند، حذف می کنیم.

sed ‘/[A-Za-z]/d’ فایل

نتیجه

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

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

زمان انتشار: 1402-12-30 11:53:04

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

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

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