awk কমান্ড টেক্সট ফাইল প্রসেস বা বিশ্লেষণ করার একটি শক্তিশালী পদ্ধতি। বিশেষ করে এটি সারি (rows) এবং কলাম দিয়ে সংগঠিত ডেটা ফাইল বিশ্লেষণ করে। সিম্পল awk কমান্ড কমান্ড লাইন থেকে চালানো যায়। জটিল কাজের জন্য awk প্রোগ্রাম (awk scripts) ফাইলে লিখে রাখা উচিত।

AWK-এর মৌলিক ধারণা
awk কমান্ডের বেসিক ফরম্যাট এমন:
awk 'pattern {action}' input-file > output-file
এর অর্থ: ইনপুট ফাইলের প্রতিটি লাইন নিন; যদি লাইনটি প্যাটার্ন.match করে, তবে অ্যাকশন প্রয়োগ করে ফলাফল আউটপুট ফাইলে লিখুন। প্যাটার্ন না থাকলে সব লাইনে অ্যাকশন প্রয়োগ হবে। উদাহরণ:
awk '{ print $5 }' table1.txt > output1.txt
উপরের স্টেটমেন্ট প্রতিটি লাইনের ৫ম কলামের এলিমেন্ট নিয়ে আউটপুট ফাইলে "output.txt"-এ লিখে। '$4' ভেরিয়েবল ৪র্থ কলামকে রেফার করে। একইভাবে $1, $2, $3 দিয়ে প্রথম, দ্বিতীয়, তৃতীয় কলাম এক্সেস করা যায়। ডিফল্টভাবে কলামগুলো স্পেস বা ট্যাব (white space) দিয়ে পৃথক থাকা অনুমান করা হয়। যদি "table1.txt" এ নিচের লাইনগুলো থাকে:
1, Justin Timberlake, Title 545, Price $7.30 2, Taylor Swift, Title 723, Price $7.90 3, Mick Jagger, Title 610, Price $7.90 4, Lady Gaga, Title 118, Price $7.30 5, Johnny Cash, Title 482, Price $6.50 6, Elvis Presley, Title 335, Price $7.30 7, John Lennon, Title 271, Price $7.90 8, Michael Jackson, Title 373, Price $5.50
তবে কমান্ডটি আউটপুট ফাইলে নিচের লাইনগুলো লিখবে:
545, 723, 610, 118, 482, 335, 271, 373,
যদি কলাম সেপারেটর স্পেস বা ট্যাব না হয়ে অন্য কিছু হয় (যেমন কমা), তবে awk স্টেটমেন্টে সেটি নির্দিষ্ট করা যায়:
awk -F, '{ print $3 }' table1.txt > output1.txt
এটি কমা দিয়ে কলাম পৃথক থাকলে প্রতিটি লাইনের ৩ নম্বর কলামের এলিমেন্ট সিলেক্ট করবে। তাই আউটপুট হবে:
Title 545 Title 723 Title 610 Title 118 Title 482 Title 335 Title 271 Title 373
AWK-এ কন্ডিশনাল এক্সপ্রেশন
কার্লি ব্র্যাকেটের ('{','}') ভেতরের স্টেটমেন্ট লিস্টকে একটি ব্লক বলা হয়। একটি ব্লকের সামনে কন্ডিশনাল এক্সপ্রেশন রাখলে, ব্লকের ভেতরের স্টেটমেন্ট শুধু তখন এক্সিকিউট হবে যখন কন্ডিশন সত্য হবে।
awk '$7=="\$7.30" { print $3 }' table1.txt
এখানে কন্ডিশন $7=="\$7.30", অর্থাৎ ৭ নম্বর কলামের এলিমেন্ট $7.30-এর সমান। ডলার সাইনের আগে ব্যাকস্ল্যাশ ব্যবহার করা হয়েছে যাতে সিস্টেম $7 কে ভেরিয়েবল না মনে করে ডলার সাইন বুঝে।
সুতরাং এই awk স্টেটমেন্ট কলাম ৭-এ "$7.30" থাকা লাইনগুলোর ৩ নম্বর কলামের এলিমেন্ট প্রিন্ট করবে।
রেগুলার এক্সপ্রেশনও কন্ডিশন হিসেবে ব্যবহার করা যায়। উদাহরণ:
awk '/30/ { print $3 }' table1.txt
দুই স্ল্যাশ ('/') এর মাঝপথের স্ট্রিংটি রেগুলার এক্সপ্রেশন। এখানে শুধু "30" স্ট্রিং। এর মানে যদি কোনো লাইনে "30" স্ট্রিং থাকে, তবে সেটার ৩ নম্বর কলামের এলিমেন্ট প্রিন্ট করবে। উপরের উদাহরণের আউটপুট হবে:
Timberlake, Gaga, Presley,
AWK-এ ক্যালকুলেশন করা
টেবিল এলিমেন্টগুলো নম্বর হলে awk দিয়ে ক্যালকুলেশন করা যায়, যেমন:
awk '{ print ($2 * $3) + $7 }'
বর্তমান সারির এলিমেন্ট এক্সেস করার ভেরিয়েবল ($1, $2, ইত্যাদি) ছাড়াও $0 ভেরিয়েবল পুরো সারি (লাইন) কে রেফার করে, এবং NF ভেরিয়েবল ফিল্ডের সংখ্যা ধারণ করে।
নতুন ভেরিয়েবলও ডিফাইন করা যায়, যেমন:
awk '{ sum=0; for (col=1; col<=NF; col++) sum += $col; print sum; }'
এটি প্রতিটি সারির সব এলিমেন্টের যোগফল কম্পিউট করে প্রিন্ট করে।
Awk স্টেটমেন্ট ঘন ঘন sed কমান্ডের সাথে কম্বাইন করা হয়।