دستور sed
(ویرایشگر جریانی) در لینوکس، یک ابزار قدرتمند جهت دستکاری متن است. این دستور به کاربران امکان میدهد تا عملیاتهای مختلفی مانند جستجو، جایگزینی، درج و حذف متن در فایلها را انجام دهند. این آموزش، راهنمایی جامع برای فراگیری دستور sed
با نمونههای عملی، توضیح دستورالعملها و موارد استفاده پیشرفته ارائه میدهد.
دستور sed چیست؟
دستور sed
یک ویرایشگر جریانی است که متن را به صورت خط به خط پردازش میکند. این امر به شما اجازه میدهد که محتوای فایلها را بدون نیاز به باز کردن مستقیم فایل در یک ویرایشگر متنی تغییر دهید. دستور sed
به طور گستردهای در اسکریپتنویسی شل و مدیریت سیستم برای خودکارسازی وظایف پردازش متن استفاده میشود.
ویژگیهای کلیدی sed
- جستجو و جایگزینی الگوها
- ویرایش فایلها در جای خود
- فیلتر کردن و دستکاری متن
- پشتیبانی از عبارات منظم
- عملیات چندخطی
ساختار ابتدایی دستور sed
ساختار ابتدایی دستور sed
شامل سه جزء اصلی است: گزینههای دستور، یک اسکریپت که دستورالعملهای ویرایشی را تعریف میکند، و فایلی که باید پردازش شود.
این ساختار به کاربران اجازه میدهد تا رفتار دستور را مشخص کرده، تبدیلات متنی را تعریف کنند و آنها را به فایل مورد نظر اعمال کنند.
- گزینههای دستور: اینها برای مشخص کردن رفتار دستور استفاده میشوند. برای مثال، گزینه
-i
برای ویرایش فایل در جای خود یعنی بازنویسی فایل به کار میرود. - اسکریپت: اسکریپت دستورالعملهای ویرایشی را تعریف میکند. این میتواند در داخل علامتهای نقل قول تکی (
'
) یا دوتایی ("
) قرار گیرد. اسکریپت میتواند شامل یک یا چند دستور ویرایشی باشد که هر کدام با نیمفاصله (;
) جدا میشوند. - فایل ورودی: این فایلی است که باید پردازش شود. میتواند یک فایل تکی یا لیستی از فایلها باشد که با فاصله از هم جدا شدهاند. اگر هیچ فایلی مشخص نشده باشد،
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 | جداسازی خطوط با کاراکتر NUL | sed -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` ارائه شده است:
استفاده از `-n` برای کمینهسازی خروجیهای ناخواسته – گزینه `-n` چاپ خودکار هر خط را سرکوب میکند و تضمین میکند که تنها خروجی مورد نظر نمایش داده میشود. این عمل نقش مهمی در کاهش بار کاری زمانی که با فایلهای بزرگ کار میکنیم، ایفا میکند.مثال:
sed -n '/pattern/p' largefile.txt
Code language: JavaScript (javascript)
سادهسازی اسکریپتها – تلاش کنید تعداد عملیاتها را در یک دستور مینیمم کنید. به طور مثال، بهجای اعمال چند دستور `sed` به صورت متوالی، آنها را در قالب یک اسکریپت واحد ترکیب کنید تا کاهش خواندن فایلها را به دنبال داشته باشد.مثال:
sed -e 's/foo/bar/' -e '/pattern/d' largefile.txt
Code language: JavaScript (javascript)
ورودی جریانی با استفاده از لولهکشی (Pipes) – هنگام پردازش دادهها از دستورات یا جریانهای دیگر، از لولهکشی (Pipes) برای جلوگیری از ایجاد فایلهای میانی و کاهش I/O دیسک استفاده کنید.مثال:
cat largefile.txt | sed 's/foo/bar/' > output.txt
Code language: JavaScript (javascript)
از ویرایش درجا در فایلهای بزرگ خودداری کنید – به جای اصلاح مستقیم فایلهای بزرگ، خروجی را در فایل جدیدی بنویسید و پس از تأیید صحت آن، با فایل اصلی جایگزین کنید.مثال:
sed 's/old/new/' largefile.txt > temp.txt && mv temp.txt largefile.txt
Code language: JavaScript (javascript)
بررسی جایگزینهای مقایسهای – برای فایلهای بسیار بزرگ، استفاده از ابزارهایی مانند `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
ابزاری مؤثر و سبکوزن برای پردازش اولیه متن است، جایگزینهای مدرن همچون awk
و perl
قابلیتهای اضافی بیشتری ارائه میدهند که آنها را برای وظایف خاص مناسبتر میکند. در اینجا تفاوتهای کلیدی و زمان استفاده از هر یک توضیح داده شده است:
زمان استفاده از sed
زمان استفاده از awk
مثال:
<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
(مثلاً s
برای جایگزینی، d
برای حذف)فایل
: فایل هدف برای پردازش
ابتدا بدون گزینه `-i` تست کنید: ابتدا دستور را بدون گزینه `-i` اجرا کنید تا خروجی را قبل از اعمال تغییرات مستقیم روی فایلها ببینید.
استفاده از عبارات منظم: از پشتیبانی `sed` از عبارات منظم برای تطابق و دستکاری الگوهای پیچیده استفاده کنید.
زنجیر کردن دستورات متعدد: از `;` یا `-e` برای اجرای چندین دستور `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 'دستور' نام_فایل
مثال:
برای چاپ خطوطی که کلمه “error” را شامل میشوند و جایگزینی “error” با “warning” در فایلی به نام `log.txt`:
sed 's/error/warning/' log.txt
برای حذف خطهای خالی از یک فایل، از دستور `sed` زیر استفاده کنید:sed '/^$/d' file.txt
توضیح:^$
: تطابق خطهای خالی (خطهای بدون کاراکتر)d
: حذف خطوط تطابقیافته
مثال:
قبل از اجرای دستور، یک فایل ممکن است به این صورت به نظر برسد:line 1 line 2 line 3
بعد از اجرای دستور:sed '/^$/d' file.txt
خروجی به این صورت خواهد بود:
line 1
line 2
line 3
تفاوت بین دستورات `grep` و `sed` در لینوکس چیست؟
ویژگی | grep | sed |
---|---|---|
هدف | جستجو برای الگوها در یک یا چند فایل | ویرایش متنهای متوالی |
خروجی | چاپ خطوطی که الگو را دارند | چاپ متن ویرایششده |
عملیات | جستجو، فیلتر | جستجو، جایگزینی، درج، حذف |
کاربرد | `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)
نظرات کاربران