رفتن به محتوای اصلی
دیدگاه کلود | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش جامع دستور sed در لینوکس

آموزش جامع دستور sed در لینوکس

دستور sed یک ابزار خط فرمان قدرتمند برای پردازش و ویرایش متن در لینوکس است که به شما امکان جایگزینی، حذف، درج و فیلتر کردن خطوط را بدون باز کردن فایل می‌دهد. با استفاده از گزینه‌هایی مانند -i برای ویرایش مستقیم، -n برای چاپ انتخابی و پشتیبانی از Regular Expression، می‌توان تغییرات پیچیده و خودکار روی فایل‌ها انجام داد. sed ابزار اصلی اسکریپت‌های شل و مدیریت فایل‌های متنی محسوب می‌شود و در ترکیب با سایر ابزارها مانند awk و perl، قابلیت‌های پیشرفته‌تری برای پردازش متن فراهم می‌کند.

آموزش جامع دستور sed در لینوکس

راهنمای کامل و کاربردی برای پردازش متن
ویژه انتشار در وب‌سایت دیدگاه


مقدمه

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

در این راهنمای جامع از دیدگاه، دستور sed را از مفاهیم پایه تا سناریوهای پیشرفته بررسی می‌کنیم و با مثال‌های عملی، کاربردهای واقعی آن را توضیح می‌دهیم. این آموزش برای مدیران سرور، برنامه‌نویسان و کاربران حرفه‌ای لینوکس تهیه شده است.


sed چیست و چگونه کار می‌کند؟

sed یک ویرایشگر جریانی است که متن را خط‌به‌خط پردازش می‌کند. این ویژگی باعث می‌شود بتوان تغییرات موردنظر را روی فایل‌ها یا داده‌های ورودی اعمال کرد، بدون آنکه فایل مستقیما باز یا ویرایش شود.

به همین دلیل sed یکی از ابزارهای اصلی در اسکریپت‌های شل و وظایف خودکار مدیریت سیستم است.


ویژگی‌های کلیدی sed

  • جستجو و جایگزینی الگوها

  • ویرایش مستقیم فایل‌ها (In-place Editing)

  • فیلتر و حذف خطوط خاص

  • پشتیبانی کامل از Regular Expression

  • پردازش چندخطی و پیشرفته


ساختار کلی دستور sed

ساختار پایه دستور sed به شکل زیر است:

 
sed [options] 'script' file

اجزای این دستور شامل موارد زیر هستند:

Options (گزینه‌ها)

برای تعیین نحوه اجرای دستور استفاده می‌شوند. به عنوان مثال:

  • -i برای ویرایش مستقیم فایل

  • -n برای جلوگیری از چاپ خودکار خروجی

Script

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

File

فایل ورودی که عملیات روی آن انجام می‌شود. در صورت عدم تعیین فایل، sed ورودی را از standard input دریافت می‌کند.


مثال ساده جایگزینی متن

 
sed 's/hello/world/' sample.txt

این دستور اولین occurrence کلمه hello را در هر خط با world جایگزین می‌کند.


گزینه‌های پرکاربرد sed

گزینهتوضیح
-iویرایش مستقیم فایل
-nجلوگیری از چاپ خودکار خروجی
-eاجرای چند دستور همزمان
-fخواندن دستورات از فایل
-r یا -Eاستفاده از regex توسعه‌یافته
-zپردازش خطوط جداشده با NUL
-bحالت باینری

سناریوهای رایج استفاده از sed

برای مثال، فایل زیر را در نظر بگیرید:

 
file1.txt

محتوا:

 
Linux is a family of free and open-source operating systems based on the Linux kernel. Operating systems based on Linux are known as Linux distributions or distros. Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.

جستجو و جایگزینی

 
sed 's/Linux/Unix/' file1.txt

به‌صورت پیش‌فرض، فقط اولین تطبیق در هر خط جایگزین می‌شود.


جایگزینی سراسری در هر خط

 
sed 's/Linux/Unix/g' file1.txt

تمام occurrenceها در هر خط جایگزین می‌شوند.


ویرایش مستقیم فایل

 
sed -i 's/Linux/Unix/' file1.txt

این دستور فایل را مستقیما تغییر می‌دهد. بدون -i، خروجی فقط نمایش داده می‌شود و فایل تغییر نمی‌کند.


حذف یک خط مشخص

 
sed '2d' file1.txt

خط دوم فایل حذف می‌شود.


چاپ خطوط خاص

 
sed -n '1,2p' file1.txt

فقط خطوط ۱ و ۲ چاپ می‌شوند.


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

 
sed '/kernel/d' file1.txt

تمام خطوطی که شامل کلمه kernel هستند حذف می‌شوند.


ایجاد فایل پشتیبان هنگام ویرایش

 
sed -i.bak 's/Unix/Linux/g' file1.txt

قبل از اعمال تغییر، نسخه پشتیبان با پسوند .bak ایجاد می‌شود.


جایگزینی Tab با Space

 
sed 's/\t/ /g' file1.txt

تمام tabها با چهار فاصله جایگزین می‌شوند.


حذف خطوط خالی

 
sed '/^$/d' file1.txt

چاپ خطوط منطبق با الگو

 
sed -n '/Ubuntu/p' file1.txt

کاربردهای پیشرفته sed

درج متن قبل از یک خط

 
sed -i '2i\This is inserted text.' file1.txt

جایگزینی nth occurrence

 
sed 's/Linux/Unix/2' file1.txt

دومین occurrence جایگزین می‌شود.


افزودن متن بعد از یک خط

 
sed -i '3a\This is appended text.' file1.txt

جایگزینی در ابتدای خط

 
sed 's/^Linux/Unix/' file1.txt

جایگزینی در انتهای خط

 
sed 's/distros.$/distributions/' file1.txt

جایگزینی بدون حساسیت به حروف بزرگ و کوچک

 
sed 's/linux/Unix/I' file1.txt

استخراج بازه‌ای از خطوط بین دو الگو

 
sed -n '/inserted/,/appended/p' file1.txt

پردازش هم‌زمان چند فایل

 
sed -i 's/Linux/Unix/' file1.txt file2.txt

شماره‌گذاری خطوط غیرخالی

 
sed '/./=' file1.txt | sed 'N;s/\n/ /'

جایگزینی در یک خط خاص

 
sed '3 s/distros/distributions/' file1.txt

جایگزینی در بازه‌ای از خطوط

 
sed '1,3 s/Linux/Unix/' file1.txt

نکات بهینه‌سازی عملکرد در فایل‌های حجیم

  • استفاده از -n برای کاهش خروجی غیرضروری

  • ترکیب چند دستور در یک اسکریپت sed

  • استفاده از pipe به‌جای فایل موقت

  • پرهیز از ویرایش مستقیم فایل‌های بسیار بزرگ

  • بررسی ابزارهای جایگزین مانند awk یا perl در سناریوهای سنگین


استفاده از sed در اسکریپت‌های شل

 
#!/bin/bash sed 's/foo/bar/g' input.txt > output.txt

مقایسه sed با awk و perl

استفاده از sed

  • جایگزینی و حذف سریع

  • عملیات ساده خط‌محور

  • اسکریپت‌های سبک

استفاده از awk

  • داده‌های ساخت‌یافته (CSV، TSV)

  • محاسبات عددی

  • گزارش‌گیری

استفاده از perl

  • regexهای پیچیده

  • منطق شرطی

  • پردازش سنگین متن


جمع‌بندی

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

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


پرسش‌های متداول (FAQ)

sed چیست؟

ابزاری برای پردازش و ویرایش متن به‌صورت خط‌به‌خط در لینوکس.

چه زمانی از sed استفاده کنیم؟

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

حذف خطوط خالی با sed چگونه انجام می‌شود؟

 
sed '/^$/d' file.txt