0

مقدمه‌ای بر دستور sed

بازدید 28

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

دستور sed چیست؟

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

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

  1. جستجو و جایگزینی الگوها
  2. ویرایش فایل‌ها در جای خود
  3. فیلتر کردن و دستکاری متن
  4. پشتیبانی از عبارات منظم
  5. عملیات چندخطی

ساختار ابتدایی دستور sed

ساختار ابتدایی دستور sed شامل سه جزء اصلی است: گزینه‌های دستور، یک اسکریپت که دستورالعمل‌های ویرایشی را تعریف می‌کند، و فایلی که باید پردازش شود.

این ساختار به کاربران اجازه می‌دهد تا رفتار دستور را مشخص کرده، تبدیلات متنی را تعریف کنند و آنها را به فایل مورد نظر اعمال کنند.

  1. گزینه‌های دستور: این‌ها برای مشخص کردن رفتار دستور استفاده می‌شوند. برای مثال، گزینه -i برای ویرایش فایل در جای خود یعنی بازنویسی فایل به کار می‌رود.
  2. اسکریپت: اسکریپت دستورالعمل‌های ویرایشی را تعریف می‌کند. این می‌تواند در داخل علامت‌های نقل قول تکی (') یا دوتایی (") قرار گیرد. اسکریپت می‌تواند شامل یک یا چند دستور ویرایشی باشد که هر کدام با نیم‌فاصله (;) جدا می‌شوند.
  3. فایل ورودی: این فایلی است که باید پردازش شود. می‌تواند یک فایل تکی یا لیستی از فایل‌ها باشد که با فاصله از هم جدا شده‌اند. اگر هیچ فایلی مشخص نشده باشد، sed از ورودی استاندارد می‌خواند.

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

sed [options] 'script' file
Code language: Bash (bash)

در این ساختار، sed نام دستور است، [options] گزینه‌های دستور، 'script' شامل دستورات ویرایش، و file فایلی است که باید پردازش شود.

sed [options] 'script' file
Code language: JavaScript (javascript)

با مثال‌های زیر بهتر درک خواهید کرد:

sed 's/hello/world/' sample.txt
Code language: JavaScript (javascript)

این دستور اولین وقوع “hello” را با “world” در هر خط از sample.txt جایگزین می‌کند.

گزینه‌های رایج استفاده شده در sed

گزینهشرحمثال
-iویرایش در جای خودsed -i 's/old/new/' file.txt
-nعدم چاپ خودکارsed -n '/pattern/p' file.txt
-eاجرای چند دستورsed -e 's/old/new/' -e '/pattern/d' file.txt
-fخواندن دستورات از یک فایلsed -f script.sed file.txt
-rاستفاده از عبارات منظم توسعه یافتهsed -r 's/old/new/' file.txt
-Eاستفاده از عبارات منظم توسعه یافته (مشابه -r)sed -E 's/old/new/' file.txt
-zجداسازی خطوط با کاراکتر NULsed -z 's/old/new/' file.txt
-nبا استفاده از این گزینه، دستور sed به صورت پیش‌فرض تولیدات خود را نمایش نخواهد دادsed -n 'p' file
-eاجازه می‌دهد تا چندین دستور را در یک ران به sed بدهیمsed -e 's/foo/bar/' -e 's/baz/qux/' file
-lطول خط مشخص شده برای دستور ‘l’ را تعیین می‌کندsed -l 100 'l' file
-bحالت باینری (حذف نکردن کاراکترهای CR)sed -b 's/old/new/' file

پرکاربردترین موارد استفاده از دستور sed

در ادامه برخی از کاربردی‌ترین موارد استفاده از دستور sed را بیان می‌کنیم.

ابتدا، یک فایل متنی نمونه به نام file1.txt ایجاد کرده و متن زیر را برای فهم آسان‌تر و دنبال کردن مطالب در آن قرار دهید:


cat > file1.txt
  
Code language: CSS (css)

متن زیر را کپی-پیست کنید:


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
  Code language: Markdown (markdown)

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

در دستور زیر، حرف s عملیات جایگزینی را مشخص می‌کند و /ها جداکننده‌اند. /Linux/ الگوی جستجو است و Unix رشته جایگزینی می‌باشد.

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


sed 's/Linux/Unix/' file1.txt
  
Code language: Bash (bash)

این دستور اولین نمونه “Linux” را با “Unix” در هر خط جایگزین می‌کند.

خروجی:


Unix is a family of free and open-source operating systems based on the Linux kernel

Operating systems based on Unix are known as Linux distributions or distros

Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others
  Code language: PHP (php)

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

پرچم جایگزینی /g (جایگزینی گلوبال) به دستور sed می‌گوید تا تمامی نمونه‌های رشته را در خط جایگزین کند.


sed 's/Linux/Unix/g' file1.txt
  
Code language: JavaScript (javascript)

این دستور تمامی نمونه‌های “Linux” را با “Unix” در هر خط جایگزین می‌کند.

خروجی:


Unix is a family of free and open-source operating systems based on the Unix kernel

Operating systems based on Unix are known as Unix distributions or distros

Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others
  Code language: PHP (php)

ویرایش محلی

گزینه -i ویرایش محلی فایل را فعال می‌کند؛ به عبارت ساده تر، فایل را بازنویسی می‌کند.


sed -i 's/Linux/Unix/' file1.txt
  
Code language: JavaScript (javascript)

این دستور فایل را در محل، جایگزین “Linux” با “Unix” مستقیماً در file1.txt انجام می‌دهد. بدون گزینه -i، جایگزینی فقط در خروجی اتفاق می‌افتد و محتوای فایل تغییر نمی‌کند. برای اینکه تغییر دائمی باشد، باید از گزینه -i استفاده کنید.

حذف خطوط خاص


sed '2d' file1.txt
  
Code language: JavaScript (javascript)

این دستور دومین خط را از file1.txt حذف می‌کند.

خروجی:


Unix is a family of free and open-source operating systems based on the Linux kernel

Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others
  Code language: PHP (php)

“““html

چاپ خطوط خاص

sed با استفاده از پارامتر -n چاپ خودکار فضای الگو را مهار می‌کند و p دستور چاپ است.

sed -n '1,2p' file1.txt
Code language: JavaScript (javascript)

این دستور خطوط 1 تا 2 را از فایل file1.txt چاپ می‌کند.

خروجی:

Unix is a family of free and open-source operating systems based on the Unix kernel

Operating systems based on Unix are known as Unix distributions or distros
Code language: JavaScript (javascript)

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

عبارت /الگو/ خطوط حاوی الگو را تطبیق می‌دهد و پرچم d خطوط تطبیق یافته را حذف می‌کند.

sed '/kernel/d' file1.txt
Code language: JavaScript (javascript)

این دستور تمام خطوطی که کلمه “kernel” را دارند، حذف می‌کند.

خروجی:

Operating systems based on Unix are known as Unix distributions or distros

Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others
Code language: PHP (php)

جایگزینی با ایجاد فایل پشتیبان

دستور زیر تمام مواردی از “Unix” را با “Linux” جایگزین می‌کند و فایل پشتیبانی با نام file1.txt.bak حاوی محتوای قدیمی‌تر فایل قبل از جایگذاری ایجاد می‌کند. پارامتر -i.bak ویرایش درجا را فعال کرده و فایل پشتیبانی ایجاد می‌کند.

sed -i.bak 's/Unix/Linux/g' file1.txt
Code language: JavaScript (javascript)

خروجی:

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
Code language: PHP (php)

و این محتوای فایل پشتیبان file1.txt.bak:

more file1.txt.bak
Code language: CSS (css)
Unix is a family of free and open-source operating systems based on the Unix kernel

Operating systems based on Unix are known as Unix distributions or distros

Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others
Code language: PHP (php)

جایگزینی تب‌ها با فضاها

دستور زیر هر کاراکتر تب را با چهار فضا جایگزین می‌کند. پرچم \t کاراکترهای تب و پرچم /g برای جایگزینی جهانی در سراسر خط است.

sed 's/\t/    /g' file1.txt
Code language: JavaScript (javascript)

خروجی:

   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
Code language: PHP (php)

حذف خطوط خالی

دستور زیر تمام خطوط خالی را از file1.txt حذف می‌کند. عبارت /^$/ خطوط خالی را تطبیق داده و پرچم d خطوط تطبیق یافته را حذف می‌کند.

sed '/^$/d' file1.txt
Code language: JavaScript (javascript)

شما می‌توانید فایل file1.txt را با استفاده از ویرایشگر متن vi ویرایش کنید و برخی خطوط خالی را برای تست این دستور اضافه نمایید.

چاپ خطوطی که یک الگو را دارند

دستور زیر تنها خطوطی که “Ubuntu” را دارند را چاپ می‌کند.

sed -n '/Ubuntu/p' file1.txt
Code language: JavaScript (javascript)

گزینه -n چاپ خودکار را مهار می‌کند. /Ubuntu/ خطوط حاوی الگو را تطبیق می‌دهد.

و خروجی دستور p خطوط مطابق را چاپ می‌کند.


    

موارد استفاده پیشرفته از دستور sed

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

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

دستور زیر “This is inserted text” را قبل از خط دوم در file1.txt قرار می‌دهد.


sed -i '2i\This is inserted text
' file1.txt
    
Code language: PHP (php)

گزینه -i برای ویرایش درجا است و پرچم 2i\ متن را قبل از خط دوم قرار می‌دهد.

توجه: بدون -i، قرارگیری متن تنها در خروجی اتفاق می‌افتد و محتوای فایل را تغییر نمی‌دهد. برای ایجاد تغییر دائمی، شما باید از گزینه -i با دستور sed استفاده کنید.

    

جایگزینی n-امین نمونه یک الگو در یک خط

برای جایگزینی اولین یا دومین نمونه یک الگو در یک خط از پرچم‌های /1 یا /2 استفاده می‌شود. دستور زیر دومین نمونه کلمه “Linux” را با “Unix” در یک خط جایگزین می‌کند.


sed 's/Linux/Unix/2' file1.txt
    
Code language: JavaScript (javascript)

اضافه کردن رشته پس از یک خط

دستور زیر “This is appended text” را بعد از خط سوم در file1.txt اضافه می‌کند. گزینه -i تضمین می‌کند که تغییرات ذخیره می‌شوند و پرچم 3a\ متن را بعد از خط مشخص شده سوم اضافه می‌کند.


sed -i '3a\This is appended text
' file1.txt
    
Code language: PHP (php)

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

پرچم ^<الگو> برای مطابقت با یک الگو خاص در ابتدای یک خط استفاده می‌شود. دستور زیر “Linux” را با “Unix” تنها در صورتی که “Linux” در ابتدای یک خط ظاهر شود، جایگزین می‌کند.


sed 's/^Linux/Unix/' file1.txt
    
Code language: JavaScript (javascript)

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

دستور زیر “distros” را فقط در صورتی که در انتهای خط ظاهر شود با “distributions” جایگزین می‌کند. پرچم <pattern>$ برای مطابقت یک الگوی خاص با انتهای خط به‌کار می‌رود.


sed 's/distros
$/distributions/' file1.txt
  
Code language: PHP (php)

خروجی:


Linux is a family of free and open-source operating systems based on the Linux kernel.

This is inserted text.

Operating systems based on Linux are known as Linux distributions or distributions.

This is appended text.

Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
  Code language: JavaScript (javascript)

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

دستور زیر “linux” را با “Unix” بدون توجه به حساسیت به کوچک یا بزرگی حروف جایگزین می‌کند. پرچم I باعث می‌شود که مطابقت بدون توجه به حروف کوچک یا بزرگ انجام شود.


sed 's/linux/Unix/I' file1.txt
    
Code language: JavaScript (javascript)

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

دستور زیر تمامی خطوط بین “inserted” و “appended” را چاپ می‌کند، شامل هر دوی آن‌ها.


sed -n '/inserted/,/appended/p' file1.txt
    
Code language: JavaScript (javascript)

1. ,: عملگر محدوده برای مطابقت خطوط بین دو الگو.

2. p: خطوط مطابقت‌یافته را چاپ می‌کند.

و گزینه -n برای سرکوب چاپ خودکار خطوط.

خروجی:


This is <^>inserted<^> text.

Operating systems based on Linux are known as Linux distributions or distros.

This is <^>appended<^> text.
    Code language: HTML, XML (xml)

پردازش چندین فایل

دستور زیر “Linux” را با “Unix” در هر دو `file1.txt` و `file2.txt` جایگزین می‌کند و فایل را بازنویسی می‌کند.


sed -i 's/Linux/Unix/' file1.txt file2.txt
    
Code language: JavaScript (javascript)

قالب‌بندی و شماره‌گذاری خطوط غیرخالی

دستور زیر به خطوط غیرخالی در `file1.txt` شماره اضافه می‌کند.


sed '/
/=' file1.txt | sed 'N;s/\n/ /'
    
Code language: PHP (php)

1. /
/=
: خطوط غیرخالی را مطابقت داده و آن‌ها را شماره‌گذاری می‌کند.

2. N: خط بعدی را به فضای الگو اضافه می‌کند.

3. s/\n/ /: کاراکتر خط جدید را با یک فاصله جایگزین می‌کند.

خروجی:


1 Linux is a family of free and open-source operating systems based on the Linux kernel.

2 This is inserted text.

3 Operating systems based on Linux are known as Linux distributions or distros.

4 This is appended text.

5 Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
    Code language: JavaScript (javascript)

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

می‌توانید دستور `sed` را به گونه‌ای محدود کنید که جایگزینی رشته را فقط در شماره خط خاصی انجام دهد. دستور زیر رشته “distros” را با “distributions” فقط در خط سوم جایگزین می‌کند.


sed '3 s/distros/distributions/' file1.txt
    
Code language: JavaScript (javascript)

خروجی:


Linux is a family of free and open-source operating systems based on the Linux kernel.

This is inserted text.

Operating systems based on Linux are known as Linux distributions or distributions.

This is appended text.

Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
    Code language: JavaScript (javascript)

جایگزینی رشته در محدوده خطوط

همچنین می‌توانید به دستور `sed` یک محدوده از شماره‌های خط را برای جایگزینی رشته مشخص کنید.

دستور زیر تنها نخستین وقوع کلمه “Linux” را با “Unix” در بین خطوط 1 تا 3 جایگزین می‌کند:


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

Code language: JavaScript (javascript)

خروجی:


Unix is a family of free and open-source operating systems based on the Linux kernel

This is inserted text

Operating systems based on Unix are known as Linux distributions or distros

This is appended text

Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others
Code language: JavaScript (javascript)

ملاحظات عملکردی برای فایل‌های بزرگ

پردازش فایل‌های بزرگ با استفاده از `sed` می‌تواند منابع سیستم را به طور قابل‌توجهی درگیر کند، به خصوص هنگامی‌ که با عملیات گسترده یا مجموعه‌های داده بسیار بزرگ سر و کار داریم.
در اینجا نکاتی برای بهینه‌سازی عملکرد و تضمین استفاده کارآمد از دستور `sed` ارائه‌ شده است:


  1. استفاده از `-n` برای کمینه‌سازی خروجی‌های ناخواسته – گزینه `-n` چاپ خودکار هر خط را سرکوب می‌کند و تضمین می‌کند که تنها خروجی مورد نظر نمایش داده می‌شود. این عمل نقش مهمی در کاهش بار کاری زمانی‌ که با فایل‌های بزرگ کار می‌کنیم، ایفا می‌کند.

    مثال:


sed -n '/pattern/p' largefile.txt

Code language: JavaScript (javascript)

  1. ساده‌سازی اسکریپت‌ها – تلاش کنید تعداد عملیات‌ها را در یک دستور مینیمم کنید. به طور مثال، به‌جای اعمال چند دستور `sed` به صورت متوالی، آن‌ها را در قالب یک اسکریپت واحد ترکیب کنید تا کاهش خواندن فایل‌ها را به دنبال داشته باشد.

    مثال:


sed -e 's/foo/bar/' -e '/pattern/d' largefile.txt

Code language: JavaScript (javascript)

  1. ورودی جریانی با استفاده از لوله‌کشی (Pipes) – هنگام پردازش داده‌ها از دستورات یا جریان‌های دیگر، از لوله‌کشی (Pipes) برای جلوگیری از ایجاد فایل‌های میانی و کاهش I/O دیسک استفاده کنید.

    مثال:


cat largefile.txt | sed 's/foo/bar/' > output.txt

Code language: JavaScript (javascript)

  1. از ویرایش درجا در فایل‌های بزرگ خودداری کنید – به جای اصلاح مستقیم فایل‌های بزرگ، خروجی را در فایل جدیدی بنویسید و پس از تأیید صحت آن، با فایل اصلی جایگزین کنید.

    مثال:


sed 's/old/new/' largefile.txt > temp.txt && mv temp.txt largefile.txt

Code language: JavaScript (javascript)


  1. بررسی جایگزین‌های مقایسه‌ای – برای فایل‌های بسیار بزرگ، استفاده از ابزارهایی مانند `awk`، `perl` یا `grep` را در نظر بگیرید که ممکن است عملکرد بهتری برای برخی کارها ارائه دهند.


    مثال:



awk '{gsub(/old/, "new"); print}' largefile.txt > output.txt

Code language: JavaScript (javascript)

یکپارچه‌سازی با اسکریپت‌های شل

دستور `sed` به طور متداول در اسکریپت‌های شل (Shell Scripts) برای اتوماسیون وظایف مکرر در مدیریت متن استفاده می‌شود. در اینجا یک مثال آورده شده است:


#!/bin/bash
# Replace all occurrences of "foo" with "bar" in input.txt and save the result
sed 's/foo/bar/g' input.txt > output.txt

Code language: PHP (php)

این اسکریپت فایل `input.txt` را پردازش کرده و خروجی اصلاح‌شده را در `output.txt` ذخیره می‌کند.

“““html
مقایسه `sed` با ابزارهای جایگزین دیگر

sed در مقابل سایر جایگزین‌ها

در حالی که sed ابزاری مؤثر و سبک‌وزن برای پردازش اولیه متن است، جایگزین‌های مدرن همچون awk و perl قابلیت‌های اضافی بیشتری ارائه می‌دهند که آن‌ها را برای وظایف خاص مناسب‌تر می‌کند. در اینجا تفاوت‌های کلیدی و زمان استفاده از هر یک توضیح داده شده است:

زمان استفاده از sed

  • جایگزینی‌های متنی سریع و ساده یا حذف‌ها
  • تبدیل‌های مبتنی بر خط در فایل‌ها
  • وظایفی که نیاز به اورهد نوشتن اسکریپت کمی دارند
  • زمان استفاده از awk

  • رسیدگی به داده‌های ساختاریافته مانند فایل‌های CSV یا TSV
  • انجام محاسبات عددی همزمان با پردازش متن
  • تولید گزارش‌های قالب‌بندی‌شده از داده‌های ورودی
  • مثال:

    <code data-shcb-language-name="bash">awk -F, '{print $1, $3}' data.csv</code>
    Code language: HTML, XML (xml)

    این دستور، فیلدهای اول و سوم را از یک فایل CSV استخراج و چاپ می‌کند.

    زمان استفاده از perl

  • دستکاری‌های متنی پیچیده که شامل عبارات منظم پیشرفته می‌شوند
  • ترکیب پردازش متن با منطق یا شرایط
  • نوشتن اسکریپت‌های فشرده، اما قدرتمند
  • مثال:

    <code data-shcb-language-name="bash">perl -pe 's/(error)/WARNING: $1/' logfile.txt</code>
    Code language: HTML, XML (xml)

    این دستور، پیشوند “WARNING:” را به خطوطی که کلمه “error” را دارند اضافه می‌کند.

    نتیجه‌گیری

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

    گام‌های بعدی

    پس از مسلط شدن به مبانی sed، می‌توانید تکنیک‌ها و موارد استفاده پیشرفته‌تر را یاد بگیرید.

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

    دستور sed در لینوکس چیست؟

    دستور sed (ویرایشگر جریان) در لینوکس، ابزار قدرتمند پردازش متن است که برای انجام تبدیل‌های پایه متنی روی یک جریان ورودی (فایل یا ورودی از یک پایپ‌لاین) استفاده می‌شود. این امکان را به شما می‌دهد که جستجو، جایگزینی، حذف یا وارد کردن متن را انجام دهید، که آن را برای اتوماتیزه کردن وظایف دستکاری متن بسیار مفید می‌سازد.

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

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

    چگونگی استفاده صحیح از `sed`؟


    دستور: عملیات sed (مثلاً s برای جایگزینی، d برای حذف)

    فایل: فایل هدف برای پردازش
    ابتدا بدون گزینه `-i` تست کنید: ابتدا دستور را بدون گزینه `-i` اجرا کنید تا خروجی را قبل از اعمال تغییرات مستقیم روی فایل‌ها ببینید.
    استفاده از عبارات منظم: از پشتیبانی `sed` از عبارات منظم برای تطابق و دستکاری الگوهای پیچیده استفاده کنید.
    زنجیر کردن دستورات متعدد: از `;` یا `-e` برای اجرای چندین دستور `sed` در یک عملیات استفاده کنید.

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

    برای جایگزینی متن، از دستور جایگزین `s` با این سینتکس استفاده کنید:
    sed 's/old_text/new_text/' file
    مثال‌ها:
    جایگزینی اولین وقوع “foo” با “bar” در هر خط:
    sed 's/foo/bar/' file.txt
    جایگزینی تمام وقوع‌های “foo” با “bar” به صورت جهانی:

    sed 's/foo/bar/g' file.txt
    جایگزینی مستقیم (تغییر مستقیم فایل):


    sed -i 's/foo/bar/g' file.txt

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

    شما می‌توانید یک دستور `sed` را مستقیماً از طریق ترمینال با استفاده از این سینتکس پایه‌ای اجرا کنید:
    sed 'دستور' نام_فایل
    مثال:
    برای چاپ خطوطی که کلمه “error” را شامل می‌شوند و جایگزینی “error” با “warning” در فایلی به نام `log.txt`:

    sed 's/error/warning/' log.txt

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

    برای حذف خط‌های خالی از یک فایل، از دستور `sed` زیر استفاده کنید:
    sed '/^$/d' file.txt
    توضیح:
    ^$: تطابق خط‌های خالی (خط‌های بدون کاراکتر)
    d: حذف خطوط تطابق‌یافته
    مثال:
    قبل از اجرای دستور، یک فایل ممکن است به این صورت به نظر برسد:
    line 1 line 2 line 3
    بعد از اجرای دستور:
    sed '/^$/d' file.txt
    خروجی به این صورت خواهد بود:

    line 1
    line 2
    line 3


    تفاوت بین دستورات `grep` و `sed` در لینوکس چیست؟

    ویژگیgrepsed
    هدفجستجو برای الگوها در یک یا چند فایلویرایش متن‌های متوالی
    خروجیچاپ خطوطی که الگو را دارندچاپ متن ویرایش‌شده
    عملیاتجستجو، فیلترجستجو، جایگزینی، درج، حذف
    کاربرد`grep الگو فایل``sed ‘دستور’ فایل`
    جستجو و جایگزینیبله (محدود)بله
    ویرایش درجاخیربله
    عبارات منظمبلهبله
    عملیات چندخطیخیربله
    فیلتر متنخیربله
    موارد استفاده رایججستجوی لاگ‌ها، یافتن الگوها در متنویرایش فایل‌های پیکربندی، جایگزینی متن در چندین فایل

    مثال:

    استفاده از `grep` برای جستجوی “error” در `log.txt`:

    
    grep 'error' log.txt
                Code language: JavaScript (javascript)

    استفاده از `sed` برای جایگزینی “error” با “warning” در `log.txt`:

    
    sed 's/error/warning/g' log.txt
                Code language: JavaScript (javascript)

    نظرات کاربران

    دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *