What means -n in SED

  • روند طبیعی ابزار 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- باید متناسب با قانونی که وضع می‌شود، مورد استفاده قرار گیرد.

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

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