رفتن به محتوای اصلی
iServer24 | ارائه‌کننده سرورهای ابری و اختصاصی
آموزش جامع دستور 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
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    محتوا:

    3 خط
    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 در اسکریپت‌های شل

    2 خط
    #!/bin/bash
    sed 's/foo/bar/g' input.txt > output.txt
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

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

    استفاده از sed

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

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

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

    استفاده از awk

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

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

    • گزارش‌گیری

    استفاده از perl

    • regexهای پیچیده

    • منطق شرطی

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


    جمع‌بندی

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

    برای تسلط بیشتر بر ابزارهای خط فرمان لینوکس، پیشنهاد می‌کنیم راهنمای دانلود فایل‌ها با cURL و انتقال امن فایل با SFTP را نیز مطالعه کنید.

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


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

    sed چیست؟

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

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

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

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

    sed '/^$/d' file.txt
    برای کپی کردن کد، روی دکمه کپی در بالا کلیک کنید

    زیرساخت ابری برای اجرای همین آموزش

    سرور ابری ساعتی را برای Docker، Ubuntu و DevOps راه‌اندازی کنید — پرداخت به میزان مصرف یا ماهانه.

    ادامه یادگیری:Docker·Ubuntu·VPS