- روند طبیعی ابزار sed بدین صورت است :
- که ابتدا خط اول از فایل یا ورودی خوانده میشود.
- سپس آن خط را درون pattern buffer میریزد.
- قوانینی که توسط کاربر تعیین شده است را اعمال می کند.
- خروجی قوانین را چاپ می کند.
- این فرایند و این حلقه به تعداد خطوط فایل یا ورودی تکرار می شود.
- حال در صورتی که از سویچ n- استفاده شود، خطوطی که مطابقتی با قوانین ندارند، چاپ نمیشوند.
توضیح با مثال ۱
- پرونده زیر را به عنوان input.txt در نظر بگیرید :
line1
line2
line3
line4
- قانونی را وضع میکنیم که خط سوم نمایش داده شود. برای این منظور :
# sed -n '3p' input.txt
line3
- در صورتی که از سویچ n- استفاده نکنیم، اتفاق زیر روی میدهد :
# sed '3p' input.txt
line1
line2
line3
line3
line4
- همان طور که ملاحظه میکنید، تک تک خطوط چاپ شدند (زیرا خروجی pattern buffer به صورت پیش فرض چاپ میشود)
- همچنین خط سوم دو بار چاپ شد. یک بار برای خروجی pattern buffer و یک بار به خاطر مطابقت با قانونی که وضع کرده بودیم)
- پس در نتیجه عدم استفاده از سویچ n- باعث میشود تا خروجی pattern buffer (فارغ از این که با قانونی که وضع کردیم تطابق دارد یا نه) چاپ شود.
توضیح با مثال ۲
- پرونده زیر را به عنوان input.txt در نظر بگیرید :
line1
line2
line3
line4
- قانونی را وضع میکنیم که خط سوم پاک شود. برای این منظور :
# sed '3d' input.txt
line1
line2
line4
- در صورتی که از سویچ n- استفاده کنیم :
# sed -n '3d' input.txt
- همان طور که ملاحظه میکنید، دستور بالا هیچ خروجیای ندارد.
- چرا که از سویچ n- استفاده کردیم لذا خطوط ۱ و ۲ و ۴ که با قانون تطابق ندارند، نمایش داده نمیشود.
- همچنین خط سوم که با قانون تطابق دارد نیز نمایش داده نشده است چرا که قانونی که وضع کردیم مبنی بر پاک کردن خط سوم است.
- در نتیجه هیچ خروجی ای از دستور بالا بدست نمیآید.
- باید توجه داشت که استفاده از سویچ n- باید متناسب با قانونی که وضع میشود، مورد استفاده قرار گیرد.