آموزش جامع دستور sed در لینوکس
راهنمای کامل و کاربردی برای پردازش متن
ویژه انتشار در وبسایت دیدگاه
مقدمه
دستور sed که مخفف Stream Editor است، یکی از قدرتمندترین ابزارهای خط فرمان لینوکس برای پردازش و ویرایش متن محسوب میشود. این ابزار به شما امکان میدهد عملیاتهایی مانند جستجو، جایگزینی، حذف، درج و فیلتر کردن متن را بدون باز کردن فایل در ویرایشگرهای متنی انجام دهید.
در این راهنمای جامع از دیدگاه، دستور sed را از مفاهیم پایه تا سناریوهای پیشرفته بررسی میکنیم و با مثالهای عملی، کاربردهای واقعی آن را توضیح میدهیم. این آموزش برای مدیران سرور، برنامهنویسان و کاربران حرفهای لینوکس تهیه شده است.
sed چیست و چگونه کار میکند؟
sed یک ویرایشگر جریانی است که متن را خطبهخط پردازش میکند. این ویژگی باعث میشود بتوان تغییرات موردنظر را روی فایلها یا دادههای ورودی اعمال کرد، بدون آنکه فایل مستقیما باز یا ویرایش شود.
به همین دلیل sed یکی از ابزارهای اصلی در اسکریپتهای شل و وظایف خودکار مدیریت سیستم است.
ویژگیهای کلیدی sed
-
جستجو و جایگزینی الگوها
-
ویرایش مستقیم فایلها (In-place Editing)
-
فیلتر و حذف خطوط خاص
-
پشتیبانی کامل از Regular Expression
-
پردازش چندخطی و پیشرفته
ساختار کلی دستور sed
ساختار پایه دستور sed به شکل زیر است:
اجزای این دستور شامل موارد زیر هستند:
Options (گزینهها)
برای تعیین نحوه اجرای دستور استفاده میشوند. به عنوان مثال:
-
-iبرای ویرایش مستقیم فایل -
-nبرای جلوگیری از چاپ خودکار خروجی
Script
دستور یا دستورات ویرایشی که مشخص میکنند sed چه عملی انجام دهد. این بخش داخل کوتیشن نوشته میشود و میتواند شامل چندین دستور باشد.
File
فایل ورودی که عملیات روی آن انجام میشود. در صورت عدم تعیین فایل، sed ورودی را از standard input دریافت میکند.
مثال ساده جایگزینی متن
این دستور اولین occurrence کلمه hello را در هر خط با world جایگزین میکند.
گزینههای پرکاربرد sed
| گزینه | توضیح |
|---|---|
-i | ویرایش مستقیم فایل |
-n | جلوگیری از چاپ خودکار خروجی |
-e | اجرای چند دستور همزمان |
-f | خواندن دستورات از فایل |
-r یا -E | استفاده از regex توسعهیافته |
-z | پردازش خطوط جداشده با NUL |
-b | حالت باینری |
سناریوهای رایج استفاده از sed
برای مثال، فایل زیر را در نظر بگیرید:
محتوا:
جستجو و جایگزینی
بهصورت پیشفرض، فقط اولین تطبیق در هر خط جایگزین میشود.
جایگزینی سراسری در هر خط
تمام occurrenceها در هر خط جایگزین میشوند.
ویرایش مستقیم فایل
این دستور فایل را مستقیما تغییر میدهد. بدون -i، خروجی فقط نمایش داده میشود و فایل تغییر نمیکند.
حذف یک خط مشخص
خط دوم فایل حذف میشود.
چاپ خطوط خاص
فقط خطوط ۱ و ۲ چاپ میشوند.
حذف خطوط دارای یک الگو
تمام خطوطی که شامل کلمه kernel هستند حذف میشوند.
ایجاد فایل پشتیبان هنگام ویرایش
قبل از اعمال تغییر، نسخه پشتیبان با پسوند .bak ایجاد میشود.
جایگزینی Tab با Space
تمام tabها با چهار فاصله جایگزین میشوند.
حذف خطوط خالی
چاپ خطوط منطبق با الگو
کاربردهای پیشرفته sed
درج متن قبل از یک خط
جایگزینی nth occurrence
دومین occurrence جایگزین میشود.
افزودن متن بعد از یک خط
جایگزینی در ابتدای خط
جایگزینی در انتهای خط
جایگزینی بدون حساسیت به حروف بزرگ و کوچک
استخراج بازهای از خطوط بین دو الگو
پردازش همزمان چند فایل
شمارهگذاری خطوط غیرخالی
جایگزینی در یک خط خاص
جایگزینی در بازهای از خطوط
نکات بهینهسازی عملکرد در فایلهای حجیم
-
استفاده از
-nبرای کاهش خروجی غیرضروری -
ترکیب چند دستور در یک اسکریپت sed
-
استفاده از pipe بهجای فایل موقت
-
پرهیز از ویرایش مستقیم فایلهای بسیار بزرگ
-
بررسی ابزارهای جایگزین مانند awk یا perl در سناریوهای سنگین
استفاده از sed در اسکریپتهای شل
مقایسه sed با awk و perl
استفاده از sed
-
جایگزینی و حذف سریع
-
عملیات ساده خطمحور
-
اسکریپتهای سبک
استفاده از awk
-
دادههای ساختیافته (CSV، TSV)
-
محاسبات عددی
-
گزارشگیری
استفاده از perl
-
regexهای پیچیده
-
منطق شرطی
-
پردازش سنگین متن
جمعبندی
sed یکی از ابزارهای حیاتی خط فرمان لینوکس است که یادگیری آن، توانایی شما در پردازش و مدیریت فایلهای متنی را بهطور چشمگیری افزایش میدهد. ترکیب قدرت sed با اسکریپتهای شل، امکان خودکارسازی بسیاری از وظایف مدیریتی را فراهم میکند.
این آموزش توسط دیدگاه برای استفاده عملی مدیران سیستم و کاربران حرفهای لینوکس تهیه شده است.
پرسشهای متداول (FAQ)
sed چیست؟
ابزاری برای پردازش و ویرایش متن بهصورت خطبهخط در لینوکس.
چه زمانی از sed استفاده کنیم؟
برای جایگزینی، حذف، درج و پردازش سریع متن بدون باز کردن فایل.

