تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

آموزش دستور sed در لینوکس + (راهنمای کامل)


۱ اسفند ۱۴۰۳

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

اگر به دنبال آموزشی کامل برای کار کردن با cmd لینوکس هستید مقاله آشنایی با خط فرمان لینوکس را به شما پیشنهاد خواهیم کرد.

در ادامه با آن ها آشنا خواهید شد:

  • دستور sed چیست؟
  • ویژگی های کلیدی دستور sed
  • دستور پایه sed
  • کاربرد های دستور sed
  • استفاده‌های پیشرفته از sed
  • بررسی عملکرد فایل های بزرگ
  • سوالات متدوال
  • جمع بندی

دستور sed چیست؟

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

ویژگی های کلیدی دستور sed

  • جستجو و جایگزینی تمامی الگوها
  • ویرایش فایل‌ها به‌صورت (In-place)
  • فیلتر کردن و ویرایش کردن متن
  • پشتیبانی از عبارات منظم (Regular Expressions)
  • عملیات چند خطی

دستور پایه sed

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

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

در ادامه تمامی اجزای این دستور را به‌صورت کامل توضیح خواهیم داد.

ویژگی های کلیدی دستور sed

گزینه‌ های دستور (Command Options)

  • این بخش رفتار کلی دستور sed را مشخص می‌کند.
  • مثال‌هایی از گزینه‌ های پرکاربرد:
    • -i : ویرایش فایل به‌ صورت Overwrite فایل اصلی.
    • -n : جلوگیری از نمایش خودکار خروجی و فقط نمایش خطوطی که صریحاً درخواست شده‌اند.
    • -e : امکان نوشتن چندین اسکریپت و اعمال آن‌ها به صورت متوالی.

اسکریپت (Script)

  • این قسمت شامل دستورالعمل‌های ویرایش متنی است.
  • دستورات اسکریپت شامل عملیات زیر می‌باشد:
    • جایگزینی (s): جایگزینی یک الگو با متنی دیگر.
      • مثال: s/hello/hi/
    • حذف (d): حذف خطوطی که با یک الگوی مشخص مطابقت دارند.
      • مثال: /pattern/d
    • درج (a یا i): اضافه کردن متن قبل یا بعد از خط مورد نظر.
      • مثال: a\ اضافه کردن این متن بعد از خط
    • چاپ (p): نمایش خطوطی که با الگوی خاصی مطابقت دارند.
      • مثال: sed -n '/pattern/p' file.txt
  • می‌توانید از چندین دستور ویرایشی در یک اسکریپت استفاده کنید و آن‌ها را با ; از هم جدا کنید.

فایل ورودی (Input File)

  • این فایل همان متنی است که دستور sed بر روی آن پردازش‌های لازم را انجام می‌دهد.
  • می‌توان یک یا چند فایل را مشخص کرد:
    • مثال: sed 's/old/new/' file1.txt file2.txt
  • اگر هیچ فایلی تعیین نشود، sed به صورت پیش‌فرض از ورودی استاندارد (مانند ورودی از کاربر یا یک لوله) استفاده می‌کند.

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

ساختار پایه دستور sed به‌صورت زیر می‌باشد.

sed [options] 'script' file

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

sed [options] 'script' file

با مثال زیر آن را بهتر درک خواهید کرد.

sed 's/hello/world/' sample.txt
دستور پایه sed

در دستور بالا اولین جایی که کلمه “hello” را پیدا بکند، آن را با کلمه “world” عوض خواهد کرد. یعنی فقط اولین “hello” در هر خط تغییر می‌کند و بقیه‌ی آن‌ها دست نخورده باقی می‌مانند.

گزینه‌ های پر کاربرد در دستور 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استفاده از عبارات منظم توسعه‌یافته (extended regex)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
-lمشخص کردن طول خط برای دستور lsed -l 100 'l' file.txt
-bحالت باینری (برای جلوگیری از حذف کاراکترهای CR)sed -b 's/old/new/' file.txt

👈🏻بیشتر بخوانید: مدیریت پکیج‌ها در سرور مجازی لینوکس

کاربرد های دستور sed

در ادامه رایج ترین کاربرد‌های دستور sed را شرح خواهیم داد.

در ابتدا باید یک فایل متنی نمونه با نام file1.txt را ایجاد کرده و بعد از آن دستور زیر را وارد کنید.

cat > 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 رشته‌ای است که قرار است جایگزین شود.

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

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

Output
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.

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

علامت /g به دستور sed می‌گوید که تمام مواردی که یک کلمه یا رشته خاصی دارند و در یک خط تکرار شده‌اند را تعویض کند.
در مفهومی ساده‌تر، وقتی از /g استفاده می‌کنید، sed تمام کلمه‌هایی که با الگوی جستجو شما مطابقت دارند را در هر خط تغییر می‌دهد.

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

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

Output
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.

ویرایش درجا

گزینه -i تمامی تغییرات را مستقیماً فایل اعمال می‌کند. به عبارت دیگر، فایل اصلی را بدون نیاز به ساخت فایل جدید، با تغییرات جدید جایگزین می‌کند.

این دستور فایل را مستقیما ویرایش می‌کند و کلمه “Linux” را با “Unix” در این فایل تغییر می‌دهد.
اگر از گزینه -i استفاده نکنید، تمامی تغییرات فقط در خروجی نمایش داده می‌شود و فایل اصلی هیچ‌گونه تغییری نخواهد کرد. برای اینکه تغییرات در فایل ذخیره شود، باید از گزینه -i استفاده کنید.

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

پاک کردن خطوط

sed '2d' file1.txt

برای حذف خطوط مد نظرتان از دستور sed استفاده کنید. برای این کار می‌توانید از یک عبارت خاص برای جستجو استفاده کنید. از دستور زیر استفاده کنید.

sed '2d' file1.txt

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

“اگر به دنبال سرور مجازی هستید، می‌توانید از خدمات سرور مجازی لیارا بهره‌مند شوید که امکانات قدرتمند و پشتیبانی عالی را برای مدیریت آسان و سریع پروژه‌های شما فراهم می‌کند.”

جستجو و جایگزینی
Output
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.

با استفاده از گزینه -n می‌توانید جلوی چاپ خودکار همه خطوط را بگیرید و بعد از آن دستور p را برای چاپ خطوطی که با یک عبارت خاص مطابقت دارند، از آن استفاده کنید.

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

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

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

Output
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.

با استفاده از دستور sed، می‌توانید تمامی خطوطی که یک الگوی خاصی دارند را حذف کنید. برای این کار از /pattern/ برای مشخص کردن الگو و d برای حذف کردن خطوطی که تشابه دارند استفاده می‌شود.

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

sed '/kernel/d' file1.txt

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

Output
Operating systems based on Unix are known as Unix distributions or distros.
Examples include Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Unix, and many others.

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

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

sed -i.bak 's/Unix/Linux/g' file1.txt
Output
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.

فایل file1.txt.bak نسخه پشتیبان فایل اصلی است و به این معنا است که محتوای فایل file1.txt قبل از تغییرات است. اگر نیاز داشته باشید، می‌توانید از این فایل برای برگرداندن تغییرات استفاده کنید.

more file1.txt.bak
Output
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.
جایگزینی با فایل پشتیبان

جایگزینی تب با فاصله‌ ها

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

sed 's/\t/ /g' file1.txt
Output 
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.

حذف خطوط خالی

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

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

sed '/^$/d' file1.txt

چاپ خطوطی که با الگو مطابقت دارند

دستور زیر فقط خطوطی را که شامل کلمه “Ubuntu” هستند از فایل file1.txt چاپ می‌کند.

sed -n '/Ubuntu/p' file1.txt
Output 
Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.

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

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

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

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

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

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

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

Output
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 distros.
Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.

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

برای جایگزینی اولین، دومین یا n امین تکرار یک الگو در یک خط، می‌توانید از فلگ‌های /1، /2 و غیره استفاده کنید.

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

sed 's/Linux/Unix/2' file1.txt
Output
Linux is a family of free and open-source operating systems based on the Unix kernel.
This is inserted text.
Operating systems based on Linux are known as Unix distributions or distros.
Examples includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.
استفاده‌های پیشرفته از sed

اضافه کردن متن بعد از یک خط خاص

دستور زیر متن "This is appended text" را بعد از خط سوم در فایل file1.txt اضافه می‌کند.

sed -i '3a\This is appended text.' file1.txt
Output
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 distros.
This is appended text.
Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.

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

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

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

sed 's/^Linux/Unix/' file1.txt
Output
Unix 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 distros.
This is appended text.
Example includes Debian, Ubuntu, Fedora, CentOS, Gentoo, Arch Linux, and many others.

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

برای جایگزینی متنی که در انتهای خط نمایش داده می‌شود، از علامت $ استفاده می‌کنیم. دستور زیر “distros.” را با “distributions” جایگزین می‌کند، اما فقط در زمانی که “distros.” در انتهای خط شما باشد.

sed 's/distros.$/distributions/' file1.txt
Output
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.

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

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

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

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

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

sed -n '/inserted/,/appended/p' file1.txt
Output
This is inserted text.
Operating systems based on Linux are known as Linux distributions or distros.
This is appended text.
اضافه کردن متن بعد از یک خط خاص

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

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

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

فرمت بندی و شماره گذاری خطوط پر

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

sed '/./=' file1.txt | sed 'N;s/\n/ /'
  • /./=: این بخش خطوط غیر خالی (خطوطی که حاوی حداقل یک کاراکتر هستند) را پیدا کرده و شماره آن‌ها را چاپ می‌کند.
  • N: این دستور خط بعدی را به فضای الگوی (pattern space) اضافه می‌کند.
  • s/\n/ /: این بخش کاراکتر newline (انتقال خط) را با یک فاصله جایگزین می‌کند، بنابراین شماره خط و محتوای آن در یک خط نمایش داده می‌شود.
Output
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.

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

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

sed '3 s/distros/distributions/' file1.txt
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.

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

با استفاده از دستور sed، می‌توانید تغییراتی که مد‌نظرتان است را در یک بازه از خطوط اعمال کنید. دستور زیر در اولین باری که کلمه “Linux” در خطوط 1 تا 3 پیدا شود را با “Unix” جایگزین می‌شود.

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

بررسی عملکرد فایل های بزرگ

اگر با استفاده از دستور sed می‌خواهید فایل‌های بزرگ را پردازش کنید، باید توجه داشته باشید که این پردازش‌ها منابع زیادی را مصرف خواهند کرد؛ به‌ویژه در زمانی که عملیات‌های متعدد یا داده‌های بسیار بزرگی را در اختیار داشته باشید. در ادامه به چندین نکته ضروری برای بهینه‌سازی عملکرد‌ها و استفاده موثر از دستور sed خواهیم پرداخت.

بررسی عملکرد فایل های بزرگ

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

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

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

    🔷مطالعه کنید: نحوه ویرایش فایل Sudoers در سرور مجازی لینوکس Linux

    استفاده از اسکریپت‌ های ساده برای کاهش تعداد عملیات

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

    به عنوان مثال، به جای استفاده از چند دستور جداگانه برای جایگزینی‌ها، می‌توانید همه‌ی تغییرات را در یک دستور sed انجام دهید:

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

    ورود به جریان با لوله‌ها (Pipes)

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

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

    جلوگیری از ویرایش برای فایل‌ های بزرگ

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

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

    مقایسه ابزارهای جایگزین

    برای فایل‌های بسیار بزرگ، استفاده از ابزارهایی مانند awk، perl یا grep ممکن است برای برخی از وظایف عملکرد بهتری داشته باشد. به عنوان مثال:

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

    این دستور از awk برای جایگزینی کلمه “old” با “new” در تمام خطوط فایل largefile.txt استفاده می‌کند و نتیجه را در فایل output.txt ذخیره می‌کند. استفاده از awk در بعضی از موارد عملکرد بهتری نسبت به sed دارد.

    مقایسه ابزارهای جایگزین

    سوالات متداول:

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

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

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

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

    برای جایگزینی یک کلمه در یک فایل با استفاده از دستور sed، از دستور زیر استفاده کنید:

    sed 's/old_word/new_word/' file.txt
    

    این دستور اولین مورد از کلمه old_word را با new_word جایگزین می‌کند.

    3. چگونه تمامی موارد یک کلمه را در هر خط جایگزین کنم؟

    برای جایگزینی تمام موارد یک کلمه در هر خط، از فلگ /g استفاده کنید:

    sed 's/old_word/new_word/g' file.txt
    

    این دستور تمام موارد old_word را در هر خط با new_word جایگزین می‌کند.

    4. چگونه تغییرات را در فایل اصلی ذخیره کنم؟

    برای ویرایش فایل به‌طور مستقیم و ذخیره تغییرات، از گزینه -i استفاده کنید:

    sed -i 's/old_word/new_word/' file.txt
    

    این دستور تغییرات را مستقیماً در فایل file.txt اعمال می‌کند.

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

    5. چگونه یک خط خاص را در فایل حذف کنم؟

    برای حذف یک خط خاص از فایل، از شماره خط استفاده کنید:

    sed '2d' file.txt
    

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

    6. چگونه می‌توانم خطوطی که با یک الگو خاص تطابق دارند را حذف کنم؟

    برای حذف خطوطی که حاوی یک الگوی خاص هستند، از دستور زیر استفاده کنید:

    sed '/pattern/d' file.txt
    

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

    7. چگونه خطوط خالی را از فایل حذف کنم؟

    برای حذف خطوط خالی از یک فایل، از دستور زیر استفاده کنید:

    sed '/^$/d' file.txt
    

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

    8. چگونه می‌توانم تنها خطوطی که حاوی یک الگو خاص هستند را چاپ کنم؟

    برای چاپ تنها خطوطی که یک الگو خاص را شامل می‌شوند، از دستور زیر استفاده کنید:

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

    این دستور فقط خطوطی که شامل pattern هستند را نمایش می‌دهد.

    9. چگونه می‌توانم از دستور sed برای حذف کلمه خاص از فایل استفاده کنم؟

    برای حذف یک کلمه خاص از یک فایل، از دستور زیر استفاده کنید:

    sed 's/word_to_remove//g' file.txt
    

    این دستور تمامی موارد word_to_remove را از فایل حذف می‌کند.

    10. چگونه می‌توانم چندین دستور sed را در یک خط اجرا کنم؟

    برای اجرای چندین دستور sed در یک خط، از گزینه -e استفاده کنید:

    sed -e 's/old/new/' -e 's/foo/bar/' file.txt
    

    این دستور هر دو تغییر را در یک مرحله در فایل انجام می‌دهد.

    اجرا دستور sed

    بیشتر مطالعه کنید: تنظیم لاگ و rotation در Nginx در سرور مجازی لینوکس

    جمع بندی

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

    برچسب‌ها: