از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش استفاده از AWK روی لینوکس
سرفصلهای مطلب
ابزارهایی که لینوکس ارائه می دهد اغلب از فلسفه طراحی یونیکس پیروی می کند. هر ابزاری باید کوچک باشد، از متن ساده برای I/O استفاده کند و به صورت مدولار عمل کند. به لطف میراث، ما برخی از بهترین عملکردهای پردازش متن را با کمک ابزارهایی مانند sed و awk داریم.
در لینوکس، ابزار awk از پیش نصب شده است روی همه توزیع های لینوکس AWK خود یک زبان برنامه نویسی است. ابزار AWK فقط یک مفسر زبان برنامه نویسی AWK است. در این راهنما، روش استفاده از AWK را بررسی کنید روی لینوکس.
استفاده از AWK
ابزار AWK زمانی که متون در قالبی قابل پیش بینی سازماندهی می شوند بیشترین کاربرد را دارد. در تجزیه و دستکاری داده های جدولی بسیار خوب است. عمل می کند روی به صورت خط به خط، روی کل فایل متنی
رفتار پیش فرض awk استفاده از فضاهای خالی (فضاها، برگه ها و غیره) برای جداسازی فیلدها است. خوشبختانه بسیاری از فایل های پیکربندی روی لینوکس از این الگو پیروی می کند.
نحو پایه
ساختار فرمان awk به این شکل است.
بخشهای فرمان کاملاً خود توضیحی است. Awk میتواند بدون بخش جستجو یا اقدام عمل کند. اگر چیزی مشخص نشده است، پس عمل پیش فرض روی بازی فقط چاپ خواهد بود. اساسا، awk will print همه مسابقات پیدا شد روی پرونده.
اگر الگوی جستجو مشخص نشده باشد، awk اقدامات مشخص شده را انجام می دهد روی تک تک خط های فایل
اگر هر دو بخش داده شود، awk از الگوی استفاده می کند تا تعیین کند که آیا خط فعلی آن را منعکس می کند یا خیر. اگر مطابقت داشت، awk عمل مشخص شده را انجام می دهد.
توجه داشته باشید که awk نیز می تواند کار کند روی متون تغییر مسیر داده شده این را می توان با لوله گذاری محتویات دستور به awk برای عمل به دست آورد روی. درباره دستور لوله لینوکس بیشتر بدانید.
برای اهداف نمایشی، در اینجا یک فایل متنی نمونه وجود دارد. این شامل 10 خط، 2 کلمه در هر خط است.
عبارت منظم
یکی از ویژگی های کلیدی که awk را به ابزاری قدرتمند تبدیل می کند، پشتیبانی از بیان منظم (به اختصار regex) است. یک عبارت منظم رشته ای است که الگوی خاصی از کاراکترها را نشان می دهد.
در اینجا فهرستی از برخی از رایج ترین نحوهای عبارت منظم آورده شده است. این نحوهای regex فقط مختص awk نیستند. اینها نحوهای regex تقریباً جهانی هستند، بنابراین تسلط بر آنها در سایر برنامه ها/برنامه نویسی که شامل بیان منظم است نیز کمک خواهد کرد.
- شخصیت های اصلی: تمام کاراکترهای الفبای عددی زیر خط (_) و غیره هستند.
- مجموعه کاراکترها: برای آسانتر کردن کارها، گروههای شخصیتی در regex وجود دارد. به عنوان مثال، حروف بزرگ (AZ)، حروف کوچک (az) و ارقام عددی (0-9).
- متا شخصیت ها: اینها شخصیت هایی هستند که راه های مختلفی را برای گسترش شخصیت های معمولی توضیح می دهند.
- دوره زمانی (.): هر تطابق کاراکتر در موقعیت معتبر است (به جز یک خط جدید).
- ستاره
- : وجود صفر یا بیشتر از نویسه بلافصل قبل از آن معتبر است.[]براکت ()
- : تطابق در صورتی معتبر است که در موقعیت، هر یک از نویسههای براکت مطابقت داشته باشد. می توان آن را با مجموعه شخصیت ها ترکیب کرد.کارتن (^)
- : مسابقه باید در ابتدای خط باشد.دلار ($)
- : مسابقه باید در انتهای خط باشد.اسلش معکوس (\)
: اگر هر متا کاراکتری باید به معنای واقعی کلمه استفاده شود.
چاپ متن print به print از تمام محتویات یک فایل متنی استفاده کنید
sample.txtprintاینجا، “
” یک دستور AWK است که محتوای ورودی را چاپ می کند.
جستجوی رشته روی AWK می تواند یک جستجوی متنی اساسی را انجام دهد
متن داده شده در بخش الگو، باید متنی باشد که پیدا شود. روی در دستور زیر، awk متن “quick” را جستجو می کند.
sample.txt print حال، بیایید از چند عبارت منظم برای تنظیم دقیق جستجو استفاده کنیم. دستور زیر خواهد بود
sample.txt print در مورد پیدا کردن چیزی در انتهای یک خط چطور؟ دستور زیر خواهد بود
sample.txt
الگوی کارت وحشی
sample.txt
الگوی کارت وحشی (با استفاده از ستاره)
‘/the*/’
sample.txt
e/’
/’
- [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: تعداد فیلدها در رکورد جاری. اگر از مقدار پیشفرض «فضای خالی» استفاده شود، با تعداد کلمات موجود در رکورد فعلی مطابقت دارد.
ORS print : جداکننده رکورد برای داده های خروجی. مقدار پیش فرض کاراکتر خط جدید است.
“NR > 1 && NR < 5"
فایل ورودی
”
sample.txt
منابع اضافی
- AWK یک ابزار قدرتمند با چندین ویژگی است. در حالی که این راهنما بسیاری از آنها را پوشش می دهد، هنوز هم فقط اصول اولیه است. تسلط بر AWK بیش از این نیاز دارد. این راهنما باید مقدمه خوبی برای ابزار باشد.
- اگر واقعاً می خواهید بر این ابزار مسلط شوید، در اینجا منابع دیگری وجود دارد که باید آنها را بررسی کنید.
- فضای خالی را کوتاه کنید
- استفاده از عبارت شرطی
- طیف وسیعی از ستون ها را چاپ کنید
Regex با AWK روی 20 نمونه AWK
اینترنت مکان بسیار خوبی برای یادگیری چیزی است. تعداد زیادی آموزش عالی وجود دارد
اصول AWK برای کاربران بسیار پیشرفته.
فکر نهایی
امیدواریم این راهنما به درک خوبی از اصول AWK کمک کند. در حالی که ممکن است مدتی طول بکشد، تسلط بر AWK از نظر قدرتی که به شما می دهد بسیار مفید است.محاسبات مبارک!
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-31 04:54:04