آشنایی با awk بخش پنجم(412 مجموع کلمات موجود در متن) (5205 بار مطالعه شده است) آشنایی
با awk
بخش
پنجم
توابع
رشتهای توابع
این بخش بــرای انجــام عملیات پردازشی
بــر روی متـــون بـــه کـار میروند.
بخشهایی
که در براکت ([])
قرار
داده شدهاند، انتخابی میباشند.
در
این بخش برخی از مهمترین این نوع توابع
را با هم مرور خواهیم کرد.
assort(source [,dest])
این
تابع محتویات آرایه را مرتب (sort)
کرده
و اندیسهای آرایه را نیز با مقادیر عددی
جایگزین مینماید.
در
صورتی که آرگومان دوم dest
ارسال
شود، تغییرات بر روی آن آرایه اعمال خواهد
شد و آرایه source
بدون
تغییر باقی خواهد ماند.
برای
مثال، آرایه زیر را در نظر بگیرید که تابع
asort بر
روی آن اعمال شده است:
a["last"] = "de" asort(a) a[1] = “cul”
a["first"] = "sac" ===> a[2] = “de”
a["middle"] = "cul" a[3] = “sac”
assorti(source [, dest])
این
تابع مشابه تابع asort
عمل
میکند با این تفاوت که در آن اندیسهای
آرایهها مرتب میشوند.
نحوه
مرتب سازی به صورت رشتهای است.
index(in, find)
این
تابع در رشته in
برای
وجود find
جستجو
کرده و شماره کاراکتر نخستین محل یافت
شدن آنرا بر میگرداند.
به
مثال زیر توجه کنید:
$ awk 'BEGIN { print index("peanutan", "an") }' 3
در
صورتی که هیچ موردی پیدا نشود، عــدد
صفـــر بـرگردانده خواهد شد.
توجه
داشته باشید که اندیسهای رشتهای در
awk از
عدد یک شروع میشوند.
length([string])
این
تابع همانطور که از نام آن پیداست، طول
رشته را بر میگــرداند.
در
صورتی که رشته از عدد تشکیل شده باشد،
تعداد رقمها برگردانده خواهد شد.
به
مثال زیر توجه کنید:
$ awk 'BEGIN { print length(35 * 15) }' 3
از
آنـجــایی کـه حاصــل ضـــرب ۱۵ در ۳۵
بـرابر است با ۵۲۵ و عدد ۵۲۵ یک عدد سه
رقمی است، در خروجی، عدد سه برگردانده
شده است.
match(string,regexp [, array])
تابع
match رشته
را برای وجـــود بلنــدترین و سمــت چــپ
ترین زیر رشته مشخص شده توسط regexp
جستجو
کرده و شماره کاراکتر محل وجود آنرا بر
میگرداند.
در
صورتی که هیچ موردی یافت نشود، عدد صفر
برگردانده خواهد شد.
split(string,array [, fieldsep])
این
تـــابع متــن ورودی را بــه بخــشهای
جدا شــده تـوسط fieldsep
تقسیم
کرده و این بخشها را در آرایه array
ذخیره
میکند.
نخستــین
قطعه در array
با
اندیس یک، دومین قطعه در array
با
اندیس دو و به همین ترتیب ذخیره میشوند.
برای
مثال:
$ awk 'BEGIN { print split("cul-de-sac", a, "-")}' 3
همانطور
که میبینید، رشته cul-de-sac
با
واسطه کاراکتر جدا کننده – به سه بخش
تقسیم میشود:
$ awk 'BEGIN { print split("cul-de-sac", a, "-");print a[1]; print a[2]; print a[3] }' 3 cul de sac
strtonum(str)
این
تابع رشته str
را
بررسی کرده و مقدار عددی آنــرا بر
میگرداند.
در
صورتی که رشته با عدد صفر شروع شود، تابع
فرض میکند که با یک عــدد اکــتــال
طـــرف اســت و در صــورتی کــه رشتــه
بـا 0x یا
0X شروع
شود، رشته را یک عدد هگزادسیمال فرض خواهد
کرد. برای
مثال:
$ awk 'BEGIN { print strtonum(0x11) }' 17
ترجمه
و اضافات: آلن
باغومیان alan@technotux.com
منبع:
http://linuxgazette.net/issue67/nazario.html
،
GNU/Awk
User's Guide
PDF Version
|