# درسنامه ۲-۱۱: مقدمه‌ای بر 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`). - فراموشی نقل‌قول صحیح در اسکریپت‌های چندبخشی شل.