دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۲۰
  • اسفند

جلسه ۲۵-۰۱ : Regular Expression با SED در یونیکس (UNIX)

  • دسته‌بندی‌ها :
جلسه ۲۵-۰۱ : Regular Expression با SED در یونیکس (UNIX)
    • جزئیات
    • نوع محتواآموزشی

      دوستان و علاقمندان به مباحث آموزش یونیکس (UNIX) ، این آموزش را از سایت پی وی لرن دنبال خواهیم نمود. Regular Expression با SED در یونیکس (UNIX) را در سه بخش بررسی خواهیم نمود. در این بخش سینتکس عمومی sed در یونیکس را به همراه محدوده هاي آدرس دهی sed و موارد دیگری خواهیم داشت.

      Regular Expression با SED در یونیکس (UNIX)

      در این بخش، در مورد جزئیات عبارات باقاعده (Regular Expression) با SED در یونیکس به تفصیل صحبت خواهیم کرد.

      یک عبارت باقاعده رشته ای است که می تواند برای توصیف چندین توالی از کاراکترها استفاده شود. عبارات باقاعده توسط چندین دستور مختلف یونیکس از جمله ed ، sed ، awk ، grep و تا حدودی محدودتر، vi مورد استفاده قرار می گیرد.

      در این جا SED مخفف stream editor است. این stream editor منحصراً برای اجرای اسکریپت ها ایجاد شده است. بنابراین ، تمام ورودی شما به تغذیه می شود و عبور می کند و به STDOUT می رود و فایل ورودی را تغییر نمی دهد.

      فراخوانی sed

      قبل از شروع ، اطمینان حاصل کنید که یک نسخه محلی از فایل متنی etc / passwd / برای کار با sed دارید.

      همان طور که قبلاً ذکر شد ، می توان sed را با ارسال داده از طریق pipe به صورت زیر فراخوانی کرد.

      مثال : 

      فرمان cat محتویات etc / pass / را از طریق pipe به فضای الگوی Sed منتقل می کند. فضای الگو (pattern space) ، بافر داخلی است که sed برای عملیات خود از آن استفاده می کند.

      در ادامه ی مبحث Regular Expression با SED در یونیکس (UNIX) ، سینتکس عمومی sed در یونیکس را خواهیم داشت.

      سینتکس عمومی sed در یونیکس

      در زیر سینتکس عمومی Sed آورده شده است.

      مثال : 

      در این جا pattern یک regular expression است و action یکی از دستوراتی است که در جدول زیر آورده شده است. اگر pattern حذف شده باشد ، action برای هر خط همان طور که در بالا دیدیم انجام می شود.

      کاراکتر اسلش (/) که pattern را احاطه کرده است مورد نیاز است زیرا از آن ها به عنوان محدود کننده استفاده می شود.

      ردیفمحدوده و توضیحات
      ۱p

      خط را چاپ می کند

       

      ۲d

      خط را حذف می کند

       

      ۳s/pattern1/pattern2/

      اولین وقوع model1 را با model2 جایگزین می کند.

      در ادامه ی سینتکس عمومی sed در یونیکس ، حذف خطوط را خواهیم داشت.

      حذف همه خطوط با sed

      اکنون خواهیم فهمید که چگونه همه خطوط را با sed حذف کنیم. sed را دوباره فراخوانی کنید؛ در این جا از تک حرف d به صورت دستور زیر استفاده می کنیم.

      مثال : 

      به جای فراخوانی sed با ارسال فایل به آن از طریق pipe، به sed می توان دستور داد كه داده ها را از یك فایل بخواند ، مانند مثال زیر.

      دستور زیر دقیقاً مانند آن چه در مثال قبلی انجام شده است ،می باشد اما بدون دستور cat .

      مثال : 

      آدرس های sed

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

      دستور زیر یک آدرس اصلی را به فرمان sed که شما استفاده کرده اید اضافه می کند.

      مثال : 

      توجه کنید که قبل از دستور delete edit شماره ۱ اضافه شده است. این دستور، sed را به انجام دستور ویرایش در اولین خط فایل راهنمایی می کند. در این مثال ، sed اولین خط / etc / password را پاک می کند و بقیه پرونده را چاپ می کند.

      محدوده هاي آدرس دهی sed

      اکنون خواهیم فهمید که چگونه با محدوده آدرس های sed کار کنیم. اگر بخواهید بیش از یک خط از یک فایل را حذف کنید ، چه می کنید؟ شما می توانید یک محدوده آدرس با sed را به شرح زیر مشخص کنید.

      مثال : 

      دستور فوق در تمام خطوط از ۱ تا ۵ اعمال می شود. این کدها پنج خط اول را حذف می کند.

      محدوده آدرس های زیر را امتحان کنید.

      ردیفمحدوده و شرح
      ۱‘۴,۱۰d’

      خطوط از ۴ اُمین تا ۱۰ اُمین حذف می شوند.

      ۲‘۱۰,۴d’

      فقط ۱۰ اُمین خط حذف می شود ، زیرا sed در جهت معکوس عمل نمی کند.

      ۳‘۴,+۵d’

      این خط مطابق خط ۴ در فایل، آن خط را حذف می کند، همچنان حذف خط ۵ بعدی ادامه می یابد ، و سپس حذف را متوقف می کند و بقیه را چاپ می کند.

      ۴‘۲,۵!d’

      این همه چیز را حذف می کند به جز شروع از خط ۲ اُمین تا ۵ اُمین را.

      ۵‘۱~۳d’

      این خط اول را حذف می کند ، از سه خط بعدی می گذرد ، و سپس خط چهارم را حذف می کند. Sed همچنان به استفاده از این الگوی تا پایان فایل ادامه می دهد.

      ۶‘۲~۲d’

      این به sed می گوید که خط دوم را حذف کند ، از خط بعدی قدم بگذرد ، خط بعدی را حذف کند و این الگو تا رسیدن به انتهای فایل تکرار می شود

      ۷‘۴,۱۰p’

      خطوط از ۴ تا ۱۰ چاپ می شوند.

      ۸‘۴,d’

      این syntax error را ایجاد می کند.

      ۹‘,۱۰d’

      این همچنین باعث ایجاد syntax error می شود.

      توجه – در حالی که از عمل p استفاده می کنید ، باید از گزینه n- برای جلوگیری از تکرار چاپ خط استفاده کنید. تفاوت بین دو دستور زیر را بررسی کنید.

      مثال : 

      کلام پایانی

      در این بخش از آموزش یونیکس به بررسی Regular Expression با SED در یونیکس (UNIX) پرداختیم و مواردی چون سینتکس عمومی sed در یونیکس ، محدوده هاي آدرس دهی sed و موارد دیگری را دنبال نمودیم. Regular Expression با SED در یونیکس (UNIX) را در جلسه ی آینده نیز ادامه خواهیم داد.

      QR:  جلسه ۲۵-۰۱ : Regular Expression با SED در یونیکس (UNIX)
      به اشتراک بگذارید