d option in SED

  • Delete pattern space. Start next cycle.
  • فرمان d مخفف کلمه Delete به معنی پاک کردن می‌باشد.
  • زمانی که از فرمان d در داخل قسمت دست نوشته استفاده می‌شود، تاکید می‌شود تا پس از یافتن الگویی خاص، آن الگو حذف و پاک شود.
  • شاید توضیحات کمی گیج کننده باشد. اجازه دهید فهم و تسلط به این بخش را در قالب مثال دنبال کنیم.

مثال اول

  • پرونده زیر را در نظر بگیرید :
# line1
line2
# line3
line4
  • پاک کردن خطوطی که با کارکتر # شروع می‌شوند :
$ sed '/^#/ d' input.txt
or
$ cat input.txt | sed '/^#/ d'
or
$ sed '/^#/ d' < input.txt
line2
line4

مثال دوم

  • پرونده زیر را در نظر بگیرید :
# line1
Line2

# line3
line4
  • پاک کردن خطوطی که با کارکتر # شروع می‌شوند و همچنین پاک کردن خطوطی که خالی هستند :
$ sed '/^#/ d' input.txt | sed '/^$/ d‘
line2
line4

مثال سوم

  • پرونده زیر را در نظر بگیرید :
line1
line2
line3
line4
  • پاک کردن خط سوم :
$ sed '3d' input.txt
line1
line2
line4

مثال چهارم

  • پرونده زیر را در نظر بگیرید :
line1
line2
line3
line4
line5
line6
line7
line8
line9

مثال پنجم

  • پرونده مثال قبل را در نظر بگیرید.
  • پاک کردن خط 4 و 8 و خطوط بین آن دو :
$ sed '4,8d' input.txt
line1
line2
line3
line9

مثال ششم

  • پرونده مثال قبل را در نظر بگیرید.
  • پاک کردن تنها آخرین خط :
$ sed '$d' input.txt
line1
line2
line3
line4
line5
line6
line7
line8

مثال هفتم

  • پرونده مثال قبل را در نظر بگیرید.
  • پاک کرن خط ۶ و پاک کردن خط ۶ تا آخرین خط :
$ sed '6,$d' input.txt
line1
line2
line3
line4
line5

مثال هشتم

  • پرونده مثال قبل را در نظر بگیرید.
  • پاک کردن خطی که حاوی عبارت line3 است و همچنین پاک کردن خط ۸ و همچنین پاک کردن تمام خطوط بین این دو :
$ sed '/line3/,8d' input.txt
line1
line2
line9

مثال نهم

  • پرونده مثال قبل را در نظر بگیرید.
  • پاک کردن خط سوم و همچنین پاک کردن خطی که درون آن عبارت line7 قرار دارد و همچنین پاک کردن خطوط بین این دو :
$ sed '3,/line7/d' input.txt
line1
line2
line8
line9

مثال دهم

  • پرونده مثال قبل را در نظر بگیرید.
  • پاک کردن خطی که داخل آن عبارت line5 است تا آخرین خط :
$ sed '/line5/,$d' input.txt
line1
line2
line3
line4

مثال یازدهم

  • پاک کردن خطی که درون آن عبارت line3 است و همچنین تا دو خط بعد از آن :
$ sed '/test/,+2d' input.txt
line1
line2
line6
line7
line8
line9
line10
  • همان طور که مشاهده می کنید خط سوم چاپ نشد و دو خط بعد از آن نیز چاپ نشد.

مثال دوازدهم

  • پرونده مثال قبل را در نظر بگیرید.
  • پاک کردن خط یا خطوطی که دارای عبارت line4 به هر نحوه در خود است :
$ sed '/line4/d' input.txt
line1
line2
line3
line5
line6
line7
line8
line9
  • نکته: فرضا خطی که دارای عبارت line41 نیز باشد، پاک می‌شود.

مثال سیزدهم

  • پرونده مثال قبل را در نظر بگیرید.
  • پاک کردن خطی که حاوی عبارت line2 در خود است و همچنین پاک کردن خطی که حاوی عبارت line7 در خود است.
  • پاک کردن خطوط بین این دو عبارت :
$ sed '/line2/,/line7/d' input.txt
line1
line8
line9
  • نکته: ممکن است در درون پرونده، عبارات line2 و line7 چندین بار تکرار شده باشد. در این صورت ابزار sed اولین عبارات را در نظر گرفته و قوانین را بر روی آن اعمال می کند.

  • بررسی شده توسط نسخه 4.7 ابزار SED

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

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