sample sed example

  • جایگزینی عبارت test.com با عبارت 1.2.3.4 در فایل input.txt

  • چاپ کردن خطوط ۲ تا ۲۱ از فایل input.txt

  • پاک کردن خطوطی که با کارکتر # شروع می شوند از فایل input.txt

  • پاک کردن خطوطی که با کارکتر # شروع می شوند و همچنین پاک کردن خطوطی که خالی هستند از فایل input.txt

  • نمایش تنها خط ۳ از فایل input.txt

  • نمایش خط ۱ به انضمام چاپ خطوط بعدی با فواصل ۲تایی از فایل input.txt

  • چاپ خط ۲ تا ۷ از فایل input.txt

  • چاپ خط آخر از فایل input.txt

  • چاپ خط ۳ تا آخر از فایل input.txt

  • اعمال دستورات و قوانین از طریق اسکریپت با نام sed.script بر روی فایل input.txt

  • چاپ خط یا خطوطی که در آن عبارت test وجود داشته باشد از فایل input.txt

  • چاپ خطی که در ان عبارت test وجود دارد تا خط ۶ از فایل input.txt

  • چاپ خط ۳ تا خطی که در آن عبارت test وجود دارد از فایل input.txt

  • چاپ خطی که در آن عبارت test وجود دارد تا خط آخر از فایل input.txt

  • چاپ خطی که در آن عبارت test وجود دارد و همچنین تا ۳ خط بعد از آن از فایل input.txt

  • چاپ خطوطی که در آن عبارت gnu و linux وجود دارد و همچنین چاپ خطوط بین این دو از فایل input.txt

  • پاک کردن خط سوم از فایل input.txt

  • پاک کردن خط ۳ از فایل و همچین پاک کردن خطوط بعدی با فواصل ۲تایی نسبت به خط ۳ از فایل input.txt

  • پاک کردن خط 4 و 8 و خطوط بین آن دو از فایل input.txt

  • پاک کردن خط آخر از فایل input.txt

  • پاک کرن خط ۶ و پاک کردن خط ۶ تا خط آخر از فایل input.txt

  • پاک کردن خطی یا خطوطی که دارای عبارت test به هر نحوه در خود است از فایل input.txt

  • نکته: فرضا خطی دارای عبارت test123 نیز باشد، پاک می شود.
  • پاک کردن خطی که حاوی عبارت test است و همچنین پاک کردن خط ۸ و همچنین پاک کردن تمام خطوط بین این دو از فایل input.txt

  • پاک کردن خط ۳ و همچنین پاک کردن خطی که درون آن عبارت test قرار دارد و همچنین پاک کردن خطوط بین این دو

  • پاک کردن خطی که داخل آن عبارت test است تا آخر

  • پاک کردن خطی که درون آن عبارت line3 هست و همچنین تا دو خط بعد از آن از فایل input.txt

  • همان طور که مشاهده می کنید خط ۳ چاپ نشد و ۲ خط بعد از آن هم چاپ نشد.

  • پاک کردن خطی که عبارت gnu در آن هست و پاک کردن خطی که عبارت linux در آن است و پاک کردن خطوط بین این دو

  • نکته: ممکن است در درون فایل، عبارات gnu و linux چندین دفعه تکرار شده باشد. در این صورت ابزار sed اولین عبارات را در نظر گرفته و قوانین را بر روی آن اعمال می کند.

  • جایگزینی عبارت linux با Gnu-Linux در هر خط از فایل input.txt

  • نکته قابل ذکر این است که تنها اولین کلمه در هر خط دستخوش تغییرات می باشد.
  • یعنی اگر در یک خط دو بار کلمه linux وجود داشته باشد، تنها اولین linux به Gnu-Linux تغییر پیدا می کند.

  • جایگزینی عبارت linux با # در هر خط از فایل input.txt

  • از آنجا که از حرف g به معنی Global یا کلی استفاده کردیم، تمامی linux های موجود در هر خط به کارکتر # تغییر پیدا می کنند.

  • جایگزینی دومین عبارت linux از هر خط با کارکتر #

  • از آنجا که از عدد 2 در آخر قانون خود استفاده کردیم، لذا تنها دومین linux موجود در هر خط به کارکتر # تغییر پیدا می کند.
  • طبیعتا اگر در خطی دومین عبارت linux وجود نداشته باشد، آن خط دستخوش تغییرات نمی شود.

  • جایگزینی دومین عبارت linux به بعد از هر خط با کارکتر #

  • دستورات بالا تمام linux های موجود در هر خط را به جز اولین، با کارکتر # جایگزین می کند.
  • یعنی فرضا ممکن است در یک خط ۳ بار کلمه linux تکرار شده باشد. در این صورت دومین و سومین کلمه linux از آن خط دستخوش تغییرات می شود و اولین کلمه linux بدون تغییر باقی می ماند.

  • تغییر تمام linux های موجود در خط ۵ با کارکتر #

  • توجه داشته باشید که فقط خط ۵ دست خوش تغییرات خواهد شد.

  • تغییر اولین linux موجود در خط ۵ به کارکتر #

  • توجه داشته باشید که از سویچ n- استفاده نکردیم، لذا بقیه خطوط نیز چاپ خواهد شد.
  • توجه داشته باشید که چون از حرف p در انتهای قانون استفاده کردیم، لذا خط ۵ دو مرتبه چاپ خواهد شد.
  • معمولا زمانی که از حرف p در قانون استفاده می کنیم، سویچ n- را نیز به کار می بریم.

  • تغییر تمام linux موجود در خط ۵ به کارکتر # و چاپ تنها خط ۵

  • توجه داشته باشید که حرف g در قانون به منظور اعمال تغییرات بر روی کلمات linux در خط ۵ است.
  • توجه داشته باشید که حرف p در قانون به منظور چاپ خط ۵ می باشد.
  • توجه داشته باشید که سویچ n- به منظور عدم چاپ و نمایش باقی خطوط می باشد.
  • توجه داشته باشید که pg یا gp در قانون تفاوت خاصی ندارد.

  • تغییر کلیه کلمات linux با # در خط ۲ تا ۵ و خطوط بین آن
  • چاپ تنها خطوطی که دستخوش تغییرات شدند


  • تغییر کلیه کلمات linux با کارکتر # در خط ۲ تا آخر خط آخر
  • چاپ تنها خطوطی که دستخوش تغییرات شدند.


  • به صورت پیشفرض ابزار sed به حروف کوچک و بزرگ حساس است.
  • در صورتی که نیاز باشد این حساسیت غیر فعال شود، از حرف I در قسمت قانون استفاده می کنیم.
  • به عنوان مثال: تغییر کلیه کلمات linux با کارکتر # در تمامی خطوط بدون حساسیت به بزرگی و کوچیکی حروف

  • حرف g در قانون به منظور اعمال تغییرات بر روی کلمات linux در هر خط می باشد.

  • پیدا کردن خطوطی که در آن کارکتر – وجود دارد.
  • تغییر کارکتر – به کارکتر +
  • پاک کردن از کارکتر + تا انتهای خط
  • به عنوان نمونه فایل زیر را در نظر بگیرید :

  • به خط ۲ توجه کنید، عبارت بعد از کارکتر + تا انتهای خط پاک شده است.
  • به خط ۴ توجه کنید، عبارت بعد از کارکتر + تا انتهای خط پاک شده است.

  • پیدا کردن ۳ کارکتر آخر از هر خط
  • جایگزینی این ۳ کارکتر با عبارت SALAM
  • به عنوان نمونه فایل زیر را در نظر بگیرید :

  • توجه داشته باشید که عبارت $… در قسمت قانون به منزله‌ی ۳ کارکتر آخر می باشد.
  • طبیعتا می توان برای اشاره به ۲ کارکتر آخر از عبارت $.. استفاده کرد.
  • توجه داشته باشید که کارکتر $ در بخش قانون به منزله پایان خط می باشد.

  • پیدا کردن ۳ کارکتر ابتدای هر خط
  • جایگزینی این ۳ کارکتر با عبارت SALAM
  • به عنوان نمونه فایل زیر را در نظر بگیرید :

  • توجه داشته باشید که عبارت …^ در قسمت قانون به منزله‌ی ۳ کارکتر اول خط می باشد.
  • طبیعتا می توان برای اشاره به ۲ کارکتر اول، از عبارت ..^ استفاده کرد.
  • توجه داشته باشید که کارکتر ^ در بخش قانون به منزله ابتدای خط می باشد.

  • فایل زیر را به عنوان نمونه در نظر بگیرید :

  • می خواهیم فایل بالا را به شکل زیر تبدیل کنیم :

  • از آنجایی که در بخش قانون باید به کارکتر / اشاره کنیم، لذا کمی متفاوت باید عمل کنیم. برای این منظور :

  • sed ‘s/www\/html/apache\/files/‘ input.txt
  • همان طور که ملاحظه می کنید، برای اشاره به کارکتر / در درون قسمت قانون، به صورت /\ عمل می کنیم.

  • در مثال بالا می توان از @ یا : به جای استفاده از / استفاده کرد. به / یا @ یا : اصطلاحا delimiter گفته می شود. مطالعه بیشتر در اینجا
  • به عنوان مثال :


  • فایل زیر را به عنوان نمونه در نظر بگیرید :

  • می خواهیم عبارت wordpress به انتهای عبارت /html/ اضافه شود. برای این منظور :

  • به عنوان مثالی دیگر می خواهیم عبارت wordpress به انتهای عبارت /www/ اضافه شود. برای این منظور :

  • همان طور که ملاحظه می کنید از کارکتر ampersand در بخش اسکریپت استفاده کردیم. مطالعه بیشتر در این خصوص در این لینک

  • میخواهیم بعد از خط سوم خطی جدید با مظمون test اضافه کنیم.
  • برای این منظور :

  • حرف a در بخش اسکریپت به منظور اضافه کردن یا append می باشد.

  • می خواهیم به دنبال یک رشته بگردیم
  • سپس بعد از آن خطی جدید با مضمونی خاص اضافه کنیم.

  • در صورتی که در فایل ورودی، چندین عبارت line2 پیدا شود، زیر تک تک خطوط آن کلمه L i n u x نوشته می شود. (append می شود)

  • می خواهیم بعد از هر خط یک خط خالی اضافه کنیم.
  • برای این منظور :


  • می خواهیم بعد از هر خط، یک خط با محتوای New_Line اضافه کنیم. برای این منظور :


  • اضافه کردن عبارت LAST_LINE بعد از آخرین خط از فایل :


  • اضافه کردن عبارت test بعد از هر خط، از خط چهارم تا آخرین خط

  • اضافه کردن خط جدید بر روی خط ۴ نیز اعمال خواهد شد.

  • اضافه کردن عبارت TEST قبل از خط سوم

  • از فرمان i به منظور اضافه کردن قبل از یا Insert استفاده می شود.

  • اضافه کردن عبارت TEST قبل از خط یا خطی هایی که حاوی عبارت line4 باشند.

  • نکته: ممکن است چندین خط حاوی عبارت line4 باشد، لذا عبارت TEST قبل از تمام خطوط آنان اضافه می شود.

  • اضافه کردن عبارت ——- قبل از تمامی خطوط موجود در فایل.


  • اضافه کردن عبارت ——- قبل از آخرین خط موجود در فایل.


  • اضافه کردن کارکتر # قبل از خط ۳ تا آخرین خط موجود در فایل.

  • نکته: همان طور که مشاهده می کنید، کارکتر # قبل از خط ۳ نیز اضافه شده است.

  • پاک کردن خطی مشخص بر اساس شماره خط
  • و جایگزینی آن خط با عبارت یا جمله ای مشخص

  • استفاده از فرمان c در بخش اسکریپت به معنی جایگزینی و تغییر است.

  • پاک کردن خط یا خط هایی که حاوی عبارت line هستند
  • و جایگزینی آن خط با عبارت یا جمله ای مشخص

  • همان طور که ملاحظه می کنید، تمام خطوط دستخوش تغییرات شدند چرا که عبارت line در تمام خطوط وجود داشت.

  • پاک کردن خط پایانی از فایل ورودی
  • و جایگزینی آن را عبارت یا جمله ای مشخص

  • همان طور که مشاهده می کنید خط آخر یعنی خط چهارم پاک شد سپس با عبارت Last Line جایگزین شد.

  • پاک کردن از خط دوم تا خط آخر
  • و جایگزینی آن خطوط با تنها عبارت یا جمله ای مشخص

  • نکته: دستور بالا باعث شد تا خطوط دوم، سوم و چهارم پاک شوند و تنها خطی با مضمون $ جایگزین آنان شود.

  • پاک کردن تک تک خطوط فایل
  • و جایگزینی عبارت یا جمله ای مشخص با تک تک خطوط

  • همان طور که ملاحظه می کنید، تمام خطوط با عبارت linux جایگزین شدند.

  • چاپ کردن شماره خطوط هر خط

  • همان طور که ملاحظه می کنید، شماره هر خط در خط قبلی آن مشخص شده است.

  • پیدا کردن شماره خطی که حاوی عبارتی خاص است :

  • همان طور که مشاهده می کنید به دنبال عبارت line3 گشتیم و شماره خط آن در قسمت خروجی مشخص شده است.
  • برای چاپ نشدن خروجی پیش فرض pattern space یا pattern buffer از سویچ n- استفاده می کنیم :

  • ممکن است دنبال عبارتی بگردیم که در چندین خط وجود داشته باشد، در این صورت شماره خط تمامی ان خطوط نمایش داده می شود.

  • چاپ شماره خطوط دو عبارت خاص و جدا از هم
  • و چاپ شماره خطوط بین خطی که حاوی این دو عبارت هستند.

  • همان طور که مشاهده می کنید شماره خطوطی که حاوی عبارت line2 و line4 بود نمایش داده شد و همچنین شماره خطوطی که بین این دو هستند نیز نمایش داده شد.
  • نکته: با توجه به مثال بالا، ممکن است چندین خطوط وجود داشته باشد که حاوی عبارت line2 یا line4 باشند. در این صورت اولیوت و همیشه به اولین یافته است.
  • به عنوان مثال فایل زیر را در نظر بگیرید :

  • همان طور که مشاهده می کنید خروجی از خط 3 یعنی اولین یافته‌ی line2 و تا خط 6 یعنی اولین یافته‌ی line4 نمایش داده شده است.

  • پیدا کردن شماره‌ی آخرین خط از فایل ورودی

  • فایل فرض دارای 7 خط بود که با دستور بالا شماره خط آخرین خط نمایش داده شد.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


نکات

  • در مثال های بالا گفته شد که فرضا خط سوم چاپ شود، باید توجه شود که منظور از خط سوم فقط خطی که دارای عبارات یا کلمات یا کارکتر باشد نیست، بلکه خطوط خالی نیز به عنوان خط حساب و شمرده می شوند.