از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
NR Built-in AWK چیست؟
سرفصلهای مطلب
NR Built-in AWK چیست؟
“NR” یک متغیر داخلی ویژه AWK است که مخفف “تعداد رکوردها” است. این متغیر برای رسیدگی به تعداد رکوردهای موجود در فایل های مشخص شده استفاده می شود.
نمونه هایی از استفاده از NR Built-in AWK در اوبونتو 20.04:
برای کسب اطلاعات بیشتر در مورد استفاده از AWK داخلی NR، باید نمونههای زیر را که پیادهسازی شدهاند مرور کنید. روی یک سیستم اوبونتو 20.04. با این حال، قبل از صحبت در مورد این مثالها، میخواهیم فایل متنی نمونهای را که در فهرست اصلی خود با نام Names.txt ایجاد کردهایم، با شما به اشتراک بگذاریم. این فایل شامل نام چند نفر و به دنبال سن آنها می باشد. ما از همان فایل متنی برای نمایش هر چهار مثال استفاده خواهیم کرد. این فایل متنی به شرح زیر است:
مثال شماره 1: نمایش اعداد خطوط با رکوردها در یک فایل متنی:
در این مثال، ما میخواهیم تمام رکوردهای فایل متنی مورد نظر خود را به گونهای نمایش دهیم که به هر رکورد به دنبال یک ترتیب صعودی، یک شماره خط خاص اختصاص داده شود. در بالا متوجه شده اید که فایل متنی مورد استفاده ما حاوی برخی رکوردها بود، اما آنها بدون شماره خط بودند. علاوه بر این، رکوردهای اینجا به خطوط متمایز متن موجود در یک فایل متنی اشاره دارد. به عنوان مثال، اگر یک فایل متنی دارای پنج خط مختلف باشد، می گوییم که دارای پنج رکورد مختلف است. برای امکان پذیر ساختن عبارت فوق، یعنی نمایش اعداد خطوط به همراه رکوردهای فایل متنی مورد نظر خود، دستور زیر را در برنامه خود اجرا می کنیم. terminal:
در این دستور، کلمه کلیدی “awk” به سیستم ما می گوید که ما در حال تلاش برای اجرای دستوری با استفاده از زبان برنامه نویسی AWK هستیم. سپس، ما یک فرمان “print” داریم که با کلمه کلیدی “NR” و متغیر ویژه “$0” همراه است. اکنون، این قسمت از دستور به منظور نمایش شماره خطوط به همراه رکوردهای موجود در فایل متنی مورد نظر ما عمل می کند. در نهایت نام فایل متنی مورد نظر خود را در این دستور قرار داده ایم تا به راحتی قابل خواندن باشد. ما این دستور را به سادگی با فشردن کلید Enter اجرا کرده ایم.
به راحتی می توانید ببینید روی را terminal که در نتیجه اجرای این دستور، محتویات فایل متنی مورد نظر ما، یعنی تمام رکوردهای فایل متنی ما، به همراه شماره خطوط مربوطه به شکل زیر نمایش داده شد:
مثال شماره 2: نمایش رکوردهای یک فایل متنی در محدوده مشخص:
گاهی اوقات، شما نمی خواهید تمام رکوردهای فایل بیشتر نمایش داده یا پردازش شوند. بلکه فقط می خواهید از رکوردهایی استفاده کنید که در یک محدوده مشخص قرار دارند. بنابراین در این مثال می خواهیم تمام رکوردهای فایل متنی مورد نظر نمایش داده شوند روی را terminal که در محدوده شماره خط مشخص شده ما قرار دارد. برای درک بیشتر این موضوع، ابتدا باید به دستور زیر که برای این منظور استفاده می شود نگاه کنید:
در این دستور، کلمه کلیدی “awk” به سیستم ما می گوید که ما در حال تلاش برای اجرای دستوری با استفاده از زبان برنامه نویسی AWK هستیم. سپس عبارت ‘NR==4, NR==8’ را داریم که محدوده رکوردهای نمایش داده شده را مشخص می کند، یعنی با استفاده از این عبارت خاص، رکوردهای ما از خط شماره 4 تا 8 (شامل) نمایش داده می شود. روی را terminal. شما می توانید این محدوده را با توجه به انتخاب خود تعریف کنید. پس از آن، دستور “print” را داریم که با کلمه کلیدی “NR” و متغیر ویژه “$0” همراه است. اکنون، این قسمت از دستور به منظور نمایش شماره خطوط به همراه رکوردهای مشخص شده موجود در فایل متنی مورد نظر ما است. در نهایت نام فایل متنی مورد نظر خود را در این دستور قرار داده ایم تا به راحتی قابل خواندن باشد. ما این دستور را به سادگی با فشردن کلید Enter اجرا کرده ایم.
به راحتی می توانید تجسم کنید روی را terminal که در نتیجه اجرای این دستور، محتوای خاص فایل متنی مورد نظر ما، یعنی تمام رکوردهای فایل متنی ما که در محدوده مشخص شده قرار دارند، به همراه شماره خطوط مربوطه نمایش داده می شوند، همانطور که در تصویر زیر نشان داده شده است:
مثال شماره 3: نمایش اعداد خطوط با رکوردهای خاص در یک فایل متنی که با علامت ویژه “-” از هم جدا شده اند:
برای خوانایی بیشتر محتویات یک فایل متنی، ممکن است بخواهید با استفاده از هر علامت خاصی، شماره خطوط را از رکوردها جدا کنید. علاوه بر این، ممکن است بخواهید ستون خاصی از تمام رکوردها نمایش داده شود. ما این مثال را برای تشریح روش نمایش اعداد خطوط با ستون خاص رکوردهای یک فایل متنی که با علامت ویژه “-” از هم جدا شده اند، طراحی کرده ایم. برای دستیابی به این نوع خروجی، باید دستور زیر را اجرا کنید:
این دستور تقریباً شبیه دستوری است که برای مثال اول خود اجرا کردیم. با این حال، تنها تفاوت این است که ما جداکننده “-” را در آن مشخص کرده ایم. علاوه بر این، به جای استفاده از متغیر ویژه «$0»، از متغیر ویژه «$1» استفاده کردهایم که مشخص میکند تنها ستون اول تمام رکوردهای فایل متنی باید چاپ شود.
در خروجی نشان داده شده در زیر، می بینید که تنها ستون اول تمام رکوردهای فایل متنی مورد نظر ما نمایش داده شده است. با این حال، اعداد خطوط به خوبی از رکوردها با کمک نماد ویژه “-” جدا شدند.
مثال شماره 4: نمایش تعداد کل رکوردها در یک فایل متنی:
گاهی اوقات، ممکن است بخواهید تعداد کل رکوردهای فایل نمایش داده شود روی را terminal. برای انجام این کار کافیست دستور زیر را اجرا کنید:
در این دستور، کلمه کلیدی “END” به سیستم می گوید که فقط باید تعداد رکوردهای فایل متنی را شمارش کند و عبارت “print NR” به سیستم شما می گوید که تعداد کل رکوردها را چاپ کند. روی را terminal.
می دانیم که در کل 10 رکورد در فایل متنی مورد نظر خود داشتیم و این نیز از خروجی دستور فوق که در تصویر زیر نشان داده شده است تأیید می شود:
نتیجه:
این مقاله با معرفی مختصری از زبان اسکریپت نویسی AWK آغاز شد. نکته اصلی این راهنما آموزش استفاده از متغیر ویژه “NR” داخلی AWK بود. ابتدا مروری بر این متغیر ویژه ارائه کردیم و در ادامه چهار مثال مختلف ارائه کردیم که با کمک آنها می توانید کاربرد آن را درک کنید. هنگامی که این نمونه ها را مرور کنید، در موقعیت خوبی برای استفاده موثر از این متغیر ویژه در AWK خواهید بود.
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-30 12:26:05