پرش به محتویات

درسنامه ۲-۱۱: مقدمه‌ای بر awk

awk یک ابزار قدرتمند پردازش متن سطربه‌سطر با الگو و عمل (pattern-action) است.

ساختار پایه

awk 'شرط {عمل}' FILE

مثال‌های رایج

# چاپ ستون‌های مشخص (جداکنندهٔ پیش‌فرض: فاصله/تب)
awk '{print $1, $3}' data.txt

# تعیین جداکنندهٔ سفارشی (مثلاً CSV)
awk -F, '{print $1 "," $3}' data.csv

# فیلتر: فقط سطرهایی که ستون سومشان > 80 است
awk '$3 > 80 {print $0}' scores.txt

# جمع مقادیر یک ستون و چاپ مجموع
awk '{sum += $2} END {print sum}' prices.txt

نکته: وقتی نیازها از cut/grep فراتر رفت، معمولاً awk انتخاب بهتری است.

تمرین کوتاه

  • از یک فایل CSV نام و امتیاز را چاپ کنید.
  • جمع یک ستون عددی را محاسبه کنید.

نکات و مثال‌های بیشتر

  • تعیین جداکنندهٔ خروجی سفارشی:
awk -F, 'BEGIN{OFS=","} {print $1,$3}' data.csv
  • افزودن سرستون و قالب‌بندی خروجی:
awk -F, 'BEGIN{print "name,score"} {print $1 "," $2}' scores.csv
  • استفاده از شرط و else:
awk '$3 >= 60 {pass++} $3 < 60 {fail++} END{print pass, fail}' scores.txt
  • انتخاب سطرهای دارای تطابق regex:
awk '/ERROR/ {print NR ":", $0}' app.log

خطاهای رایج

  • قاطی‌کردن جداکنندهٔ ورودی (-F) با جداکنندهٔ خروجی (OFS).
  • فراموشی نقل‌قول صحیح در اسکریپت‌های چندبخشی شل.