99fb7f0e82
- Created a new sitemap.xml file for better SEO. - Added a compressed version of the sitemap as sitemap.xml.gz. - Introduced extra.css for custom styles, including Persian font support (IRANSansX). - Defined font-face rules for regular and bold styles of IRANSansX. - Implemented various text styles and layout adjustments for better readability. - Enhanced Mermaid diagram styles to support Persian text rendering.
59 lines
1.7 KiB
Markdown
59 lines
1.7 KiB
Markdown
# درسنامه ۲-۱۱: مقدمهای بر 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`).
|
|
- فراموشی نقلقول صحیح در اسکریپتهای چندبخشی شل.
|