وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

روش استفاده از AWK روی لینوکس

0 15
زمان لازم برای مطالعه: 6 دقیقه


ابزارهایی که لینوکس ارائه می دهد اغلب از فلسفه طراحی یونیکس پیروی می کند. هر ابزاری باید کوچک باشد، از متن ساده برای I/O استفاده کند و به صورت مدولار عمل کند. به لطف میراث، ما برخی از بهترین عملکردهای پردازش متن را با کمک ابزارهایی مانند sed و awk داریم.

در لینوکس، ابزار awk از پیش نصب شده است روی همه توزیع های لینوکس AWK خود یک زبان برنامه نویسی است. ابزار AWK فقط یک مفسر زبان برنامه نویسی AWK است. در این راهنما، روش استفاده از AWK را بررسی کنید روی لینوکس.

استفاده از AWK

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

رفتار پیش فرض awk استفاده از فضاهای خالی (فضاها، برگه ها و غیره) برای جداسازی فیلدها است. خوشبختانه بسیاری از فایل های پیکربندی روی لینوکس از این الگو پیروی می کند.

نحو پایه

ساختار فرمان awk به این شکل است.

$ بیخیال ‘// { ; <یکی_دیگر>؛ }’ <فایل>

بخش‌های فرمان کاملاً خود توضیحی است. Awk می‌تواند بدون بخش جستجو یا اقدام عمل کند. اگر چیزی مشخص نشده است، پس عمل پیش فرض روی بازی فقط چاپ خواهد بود. اساسا، awk will print همه مسابقات پیدا شد روی پرونده.

اگر الگوی جستجو مشخص نشده باشد، awk اقدامات مشخص شده را انجام می دهد روی تک تک خط های فایل

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

توجه داشته باشید که awk نیز می تواند کار کند روی متون تغییر مسیر داده شده این را می توان با لوله گذاری محتویات دستور به awk برای عمل به دست آورد روی. درباره دستور لوله لینوکس بیشتر بدانید.

برای اهداف نمایشی، در اینجا یک فایل متنی نمونه وجود دارد. این شامل 10 خط، 2 کلمه در هر خط است.

$ گربه sample.txt

روش استفاده از AWK روی لینوکس

عبارت منظم

یکی از ویژگی های کلیدی که awk را به ابزاری قدرتمند تبدیل می کند، پشتیبانی از بیان منظم (به اختصار regex) است. یک عبارت منظم رشته ای است که الگوی خاصی از کاراکترها را نشان می دهد.

در اینجا فهرستی از برخی از رایج ترین نحوهای عبارت منظم آورده شده است. این نحوهای regex فقط مختص awk نیستند. اینها نحوهای regex تقریباً جهانی هستند، بنابراین تسلط بر آنها در سایر برنامه ها/برنامه نویسی که شامل بیان منظم است نیز کمک خواهد کرد.

  • شخصیت های اصلی: تمام کاراکترهای الفبای عددی زیر خط (_) و غیره هستند.
    • مجموعه کاراکترها: برای آسان‌تر کردن کارها، گروه‌های شخصیتی در regex وجود دارد. به عنوان مثال، حروف بزرگ (AZ)، حروف کوچک (az) و ارقام عددی (0-9).
  • متا شخصیت ها: اینها شخصیت هایی هستند که راه های مختلفی را برای گسترش شخصیت های معمولی توضیح می دهند.
    • دوره زمانی (.): هر تطابق کاراکتر در موقعیت معتبر است (به جز یک خط جدید).
    • ستاره
    • : وجود صفر یا بیشتر از نویسه بلافصل قبل از آن معتبر است.[]براکت ()
    • : تطابق در صورتی معتبر است که در موقعیت، هر یک از نویسه‌های براکت مطابقت داشته باشد. می توان آن را با مجموعه شخصیت ها ترکیب کرد.کارتن (^)
    • : مسابقه باید در ابتدای خط باشد.دلار ($)
    • : مسابقه باید در انتهای خط باشد.اسلش معکوس (\)
پیشنهاد می‌کنیم بخوانید:  روش استفاده از دستور خواندن در Bash

: اگر هر متا کاراکتری باید به معنای واقعی کلمه استفاده شود.

چاپ متن print به print از تمام محتویات یک فایل متنی استفاده کنید

فرمان در مورد الگوی جستجو، هیچ الگوی تعریف نشده است. بنابراین، awk تمام خطوط را چاپ می کند. $ بیخیالprint'{ }’

روش استفاده از AWK روی لینوکسروش استفاده از AWK روی لینوکس

sample.txtprintاینجا، “

” یک دستور AWK است که محتوای ورودی را چاپ می کند.

جستجوی رشته روی AWK می تواند یک جستجوی متنی اساسی را انجام دهد

متن داده شده در بخش الگو، باید متنی باشد که پیدا شود. روی در دستور زیر، awk متن “quick” را جستجو می کند.

تمام خطوط فایل sample.txt. $ بیخیال ‘/سریع/’

روش استفاده از AWK روی لینوکسروش استفاده از AWK روی لینوکس

sample.txt print حال، بیایید از چند عبارت منظم برای تنظیم دقیق جستجو استفاده کنیم. دستور زیر خواهد بود

تمام خطوطی که در ابتدا “قهوه ای” دارند. $ بیخیال ‘/^قهوه ای/’

روش استفاده از AWK روی لینوکسروش استفاده از AWK روی لینوکس

sample.txt print در مورد پیدا کردن چیزی در انتهای یک خط چطور؟ دستور زیر خواهد بود

تمام خطوطی که در پایان “سریع” دارند. $ بیخیال ‘/سریع$/’

روش استفاده از AWK روی لینوکسروش استفاده از AWK روی لینوکس

sample.txt

الگوی کارت وحشی

مثال بعدی قرار است استفاده از caret (.) را به نمایش بگذارد. در اینجا، هر دو کاراکتر قبل از کاراکتر “e” می تواند وجود داشته باشد. $ بیخیال ‘/..e/’

روش استفاده از AWK روی لینوکسروش استفاده از AWK روی لینوکس

sample.txt

الگوی کارت وحشی (با استفاده از ستاره)

اگر هر تعداد کاراکتر در مکان وجود داشته باشد چه؟ برای مطابقت با هر کاراکتر احتمالی در موقعیت، از ستاره استفاده کنید . در اینجا، AWK با تمام خطوطی که هر مقدار کاراکتر بعد از “the” دارند مطابقت خواهد داشت. $ بیخیال

روش استفاده از AWK روی لینوکسروش استفاده از AWK روی لینوکس

‘/the*/’

sample.txt

بیان براکت مثال زیر روش استفاده از عبارت براکت را نشان می دهد. عبارت براکت نشان می‌دهد که در مکان، تطابق در صورتی معتبر خواهد بود که با مجموعه کاراکترهای محصور شده در پرانتز مطابقت داشته باشد. به عنوان مثال، دستور زیر “The” و “Tee” را به عنوان منطبقات معتبر مطابقت خواهد داد. $[he]بیخیال ‘/ تی

روش استفاده از AWK روی لینوکسروش استفاده از AWK روی لینوکس

e/’

sample.txt چند مجموعه کاراکتر از پیش تعریف شده در عبارت منظم وجود دارد. به عنوان مثال، مجموعه تمام حروف بزرگ به عنوان “AZ” برچسب گذاری شده است. در دستور زیر، awk با تمام کلماتی که دارای یک حرف بزرگ هستند مطابقت خواهد داشت. $[A-Z]بیخیال ‘/

روش استفاده از AWK روی لینوکسروش استفاده از AWK روی لینوکس

/’

  • [0-9]sample.txt
  • [a-z]به استفاده زیر از مجموعه کاراکترها با بیان براکت نگاهی بیندازید.
  • [A-Z]: یک رقم را نشان می دهد
  • [a-zA-z]: یک حرف کوچک را نشان می دهد
  • [a-zA-z 0-9]: یک حرف بزرگ را نشان می دهد

: نشان دهنده یک حرف است

: یک کاراکتر یا رقم را نشان می دهد.

متغیرهای از پیش تعریف شده Awk

  • AWK با دسته ای از متغیرهای از پیش تعریف شده و خودکار عرضه می شود. این متغیرها می توانند نوشتن برنامه ها و اسکریپت ها با AWK را آسان تر کنند.در اینجا برخی از متداول ترین متغیرهای AWK که با آنها روبرو خواهید شد، آورده شده است.
  • نام فایل: نام فایل فایل ورودی فعلی.
  • RS: جداکننده رکورد. به دلیل ماهیت AWK، داده ها را هر بار یک رکورد پردازش می کند. در اینجا، این متغیر جداکننده مورد استفاده برای تقسیم جریان داده به رکوردها را مشخص می کند. به طور پیش فرض، این مقدار کاراکتر خط جدید است.
  • NR: شماره رکورد ورودی فعلی. اگر مقدار RS روی پیش‌فرض تنظیم شود، این مقدار شماره خط ورودی فعلی را نشان می‌دهد.
  • FS/OFS: کاراکتر(های) مورد استفاده به عنوان جداکننده فیلد. پس از خواندن، AWK یک رکورد را به فیلدهای مختلف تقسیم می کند. جداکننده با مقدار FS تعریف می شود. هنگام چاپ، AWK دوباره به همه فیلدها می پیوندد. با این حال، در این زمان، AWK از جداکننده OFS به جای جداکننده FS استفاده می کند. به طور کلی، هر دو FS و OFS یکسان هستند اما اجباری نیستند.
  • NF: تعداد فیلدها در رکورد جاری. اگر از مقدار پیش‌فرض «فضای خالی» استفاده شود، با تعداد کلمات موجود در رکورد فعلی مطابقت دارد.
پیشنهاد می‌کنیم بخوانید:  با استفاده از عملگر =~ در Bash

ORS print : جداکننده رکورد برای داده های خروجی. مقدار پیش فرض کاراکتر خط جدید است.

بیایید آنها را در عمل بررسی کنیم. دستور زیر از متغیر NR استفاده می کند خط 2 تا خط 4 از sample.txt. AWK همچنین از عملگرهای منطقی مانند logical و (&&) پشتیبانی می کند. $ بیخیال

روش استفاده از AWK روی لینوکسروش استفاده از AWK روی لینوکس

“NR > 1 && NR < 5"

sample.txt برای اختصاص یک مقدار خاص به یک متغیر AWK، از ساختار زیر استفاده کنید. $ بیخیال‘// { ; <یکی_دیگر>؛ }’<متغیر>=<ارزش >،<

فایل ورودی

> به عنوان مثال، برای حذف تمام خطوط خالی از فایل ورودی، مقدار RS را اساساً به هیچ تغییر دهید. این ترفندی است که از یک قانون مبهم POSIX استفاده می کند. مشخص می‌کند که اگر مقدار RS یک رشته خالی باشد، رکوردها با دنباله‌ای از یک خط جدید با یک یا چند خط خالی جدا می‌شوند. در POSIX یک خط خالی بدون محتوا کاملا خالی است. با این حال، اگر خط حاوی فضاهای خالی باشد، “خالی” در نظر گرفته نمی شود. $printبیخیال ‘{}’RS =

روش استفاده از AWK روی لینوکسروش استفاده از AWK روی لینوکس

sample.txt

منابع اضافی

  • AWK یک ابزار قدرتمند با چندین ویژگی است. در حالی که این راهنما بسیاری از آنها را پوشش می دهد، هنوز هم فقط اصول اولیه است. تسلط بر AWK بیش از این نیاز دارد. این راهنما باید مقدمه خوبی برای ابزار باشد.
  • اگر واقعاً می خواهید بر این ابزار مسلط شوید، در اینجا منابع دیگری وجود دارد که باید آنها را بررسی کنید.
  • فضای خالی را کوتاه کنید
  • استفاده از عبارت شرطی
  • طیف وسیعی از ستون ها را چاپ کنید

Regex با AWK روی 20 نمونه AWK

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

اصول AWK برای کاربران بسیار پیشرفته.

فکر نهایی

امیدواریم این راهنما به درک خوبی از اصول AWK کمک کند. در حالی که ممکن است مدتی طول بکشد، تسلط بر AWK از نظر قدرتی که به شما می دهد بسیار مفید است.محاسبات مبارک!

برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-31 04:54:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید