- 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