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



  • ۲۰
  • اسفند

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

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

      دوستان و علاقمندان به مباحث آموزش یونیکس (UNIX) ، این آموزش را از سایت پی وی لرن دنبال خواهیم نمود. در بخش آخر بررسی Regular Expression با SED در یونیکس (UNIX) به بررسی دستور Matching، استفاده از چندین دستور sed در یونیکس ، اشاره به & ، کاراکترهاي تطبیق (Matching Characters) ، کلمات کلیدی Character Class و غیره می پردازیم. با ادامه ی آموزش یونیکس همرا ما باشید.

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

      دستور Matching

      شما می توانید از گزینه p به همراه گزینه n- برای چاپ تمام خطوط مطابق به شرح زیر استفاده کنید.

      مثال : 

       استفاده از عبارت منظم (Regular Expression)

      در حین تطبیق الگوها ، می توانید از عبارت Regular استفاده کنید که انعطاف پذیری بیش تری را ارائه می دهد.

      مثال زیر را بررسی کنید که تمام خطوط که شروع با Daemon را مطابقت می دهد و سپس آن ها را حذف می کند.

      مثال : 

      در زیر مثالی وجود دارد که تمام خطوط منتهی به sh را حذف می کند.

      مثال : 

      در جدول زیر چهار کاراکتر خاص آورده شده است که در عبارات منظم بسیار مفید هستند.

      ردیفکاراکتر و شرح
      ۱^

      با شروع خطوط مطابقت دارد.

       

      ۲$

      با پایان خطوط مطابقت دارد.

       

      ۳.

      با هر کاراکتر واحد مطابقت دارد

       

      ۴*

      وقایع صفر یا بیش تر از کاراکتر قبلی را مطابقت می دهد.

       

      ۵[chars]

      با هر کدام از کاراکترهای داده شده در chars مطابقت دارد ، جایی که char ها دنباله ای از کاراکترها هستند. برای نشان دادن طیف وسیعی از کاراکترها می توانید از کاراکتر – استفاده کنید.

      کاراکترهاي تطبیق (Matching Characters)

      به چند عبارت دیگر نگاهی می اندازیم تا کاربرد متاکاراکترها را نشان دهیم. به عنوان مثال ، الگوی زیر را بررسی می کنیم.

      ردیفعبارت و توضیحات
      ۱/a.c/

      خطوطی را شامل رشته هایی مانند a + c ، a-c ، abc و a3c است، مطابقت می دهد.

       

      ۲/a*c/

      همان رشته ها را به همراه رشته هایی مانند ace, yacc و arctic مطابقت می دهد.

       

      ۳/[tT]he/

      رشته ی The و the را مطابقت می دهد.

       

      ۴/^$/

      خطوط خالی را مطابقت می دهد.

       

      ۵/^.*$/

      یک خط کامل را مطابقت می دهد.

       

      ۶/ */

      یک یا چند فاصله را مطابقت می دهد.

       

      ۷/^$/

      خطوط خالی (blank) را مطابقت می دهد.

      جدول زیر تعدادی از کاراکترهای متداول را نشان می دهد.

      ردیفتنظیم و توضیحات
      ۱[a-z]

      حرف کوچک تکی را تطبیق مى دهد.

       

      ۲[A-Z]

      حرف بزرگ تکی را تطبیق مى دهد.

       

      ۳[a-zA-Z]

      با یک حرف واحد مطابقت دارد.

       

      ۴[۰-۹]

      با یک عدد مطابقت دارد.

       

      ۵[a-zA-Z0-9]

      یک حرف یا عدد واحد را تطبیق مى دهد.

      در ادامه ی مبحث بررسی Regular Expression با SED در یونیکس ، با کلمات کلیدی Character Class آشنا می شویم.

      کلمات کلیدی Character Class

      برخی از کلمات کلیدی ویژه معمولاً برای regexps ، به خصوص ابزارهای GNU که از regexps استفاده می کنند ، در دسترس هستند. این ها برای عبارات regular بسیار مفید هستند زیرا چیزها را ساده می کنند و خوانایی را بالا می برند.

      کاراکترهای a تا z و کاراکترهای A تا Z ، یک کلاس از جمله، کاراکترها را تشکیل می دهند که دارای کلمه کلیدی [[: alpha:]] هستند.

      با استفاده از کلید واژه alphabet character class ، این دستور فقط آن خطوط را در فایل etc/syslog.conf/ که با یک حرف از الفبا شروع می شود، چاپ می کند.

      مثال : 

      جدول زیر لیستی کامل از کلمات کلیدی Character Class موجود در GNU sed آمده است.

      ردیفCharacter Class و شرح
      ۱[[:alnum:]]

      [Alphanumeric [a-z A-Z 0-9

       

      ۲[[:alpha:]]

      الفبایی [a-z A-Z]

      ۳[[:blank:]]

      کاراکترهای خالی (فاصله یا تب)

       

      ۴[[:cntrl:]]

      کاراکترهای کنترل

       

      ۵[[:digit:]]

      عددها [۰-۹]

       

      ۶[[:graph:]]

      هر کاراکتر قابل مشاهده (به استثنای فضای سفید)

       

      ۷[[:lower:]]

      حروف کوچک [a-z]

       

      ۸[[:print:]]

      کاراکترهای قابل چاپ (کاراکترهای غیر کنترلی)

       

      ۹[[:punct:]]

      علائم نگارشی

       

      ۱۰[[:space:]]

      فضای سفید

       

      ۱۱[[:upper:]]

      حروف بزرگ [A-Z]

       

      ۱۲[[:xdigit:]]

      رقم های هگز [۰-۹ a-f A-F]

      اشاره به &

      sed metacharacter & محتوای الگویی را که مطابقت دارد نشان می دهد. به عنوان مثال ، می گویند فایلی دارید به نام phone.txt پر از شماره تلفن ها ، مانند موارد زیر:

      مثال : 

      شما می توانید برای خواندن آسان تر کد منطقه (سه رقم اول) را که توسط پرانتز احاطه شده است ، تهیه کنید. برای این کار می توانید از کاراکتر جایگزین & استفاده کنید.

      مثال : 

      در قسمت الگو، ۳ رقم اول را مطابقت می دهید و سپس از & استفاده می کنید، و آن ۳ رقم را با & جایگزین می کنید.

      بررسی Regular Expression با SED در یونیکس را با مبحث استفاده از چندین دستور sed در یونیکس ادامه می دهیم.

      استفاده از چندین دستور sed در یونیکس

      شما می توانید چندین دستور sed در یک دستور واحد sed به شرح زیر استفاده کنید.

      مثال : 

      در این جا command1 از طریق commandN دستورات sed از نوع مورد بحث در گذشته هستند. این دستورات برای هر یک از سطرهای موجود در لیست فایل های داده شده توسط فایل ها اعمال می شود.

      با استفاده از همین ساز و کار ، می توانیم مثال شماره تلفن فوق را به شرح زیر بنویسیم.

      مثال : 

      توجه – در مثال بالا ، به جای تکرار کلمه کلیدی class کاراکتر [[:digit:]] سه بار ، ما آن را با {۳\}\ جایگزین کردیم ، به این معنی که عبارت منظم قبلی سه بار مطابقت پیدا کرده. ما همچنین از \ برای شکستن خط استفاده کرده ایم و باید قبل از اجرای دستور حذف شود.

      در ادامه ی مبحث استفاده از چندین دستور sed در یونیکس Back References را داریم.

      Back References

      متاکاراکتر & مفید است ، اما حتی تعریف مفیدتر، توانایی تعریف مناطق خاص (specific regions) در regular expressions است. این مناطق ویژه می توانند به عنوان مرجعی در رشته های جایگزینی شما استفاده شوند. با تعریف قسمت های خاصی از یک regular expressions، می توانید دوباره به آن قسمت ها با کاراکتر مرجع خاص مراجعه کنید.

      برای انجام back references ، ابتدا باید یک منطقه را تعریف کرده و به آن منطقه اشاره کنید. برای تعریف یک منطقه ، پرانتزهای backslashed را در اطراف هر منطقه مورد علاقه خود وارد می کنید. اولین منطقه ای که شما با استفاده از backslash ها احاطه کرده اید ، پس از اشاره توسط ۱ \ ، منطقه دوم توسط ۲ \ و موارد دیگر است.

      با فرض phone.txt متن زیر وجود دارد.

      مثال : 

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

      مثال : 

      توجه – در مثال بالا ، هر عبارت منظم در داخل پرانتز با استفاده از ۱ \ ، ۲ \ و موارد دیگر باز خواهد گشت. ما در این جا از \ \ استفاده کرده ایم. این باید قبل از اجرای دستور حذف شود.

      بررسی Regular Expression با SED در یونیکس را در این جا به پایان می رسانیم.

      کلام پایانی

      بررسی Regular Expression با SED در یونیکس را با بحث در مورد استفاده از چندین دستور sed در یونیکس ، دستور Matching، استفاده از چندین دستور sed در یونیکس ، اشاره به & ، کاراکترهاي تطبیق (Matching Characters) ، کلمات کلیدی Character Class و غیره ادامه دادیم. در جلسه ی آینده به بررسی File System Basics می پردازیم. با آموزش یونیکس از وب سایت پی وی لرن همراه باشید.

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