คำสั่ง awk เป็นวิธีที่ทรงพลังสำหรับการประมวลผลหรือวิเคราะห์ไฟล์ข้อความ โดยเฉพาะ มันวิเคราะห์ไฟล์ข้อมูลที่จัดระเบียบโดยบรรทัด (rows) และคอลัมน์ คำสั่ง awk เรียบง่ายสามารถรันจากบรรทัดคำสั่ง งานที่ซับซ้อนกว่าควรเขียนเป็น awk programs (เรียกว่า awk scripts) ลงในไฟล์

พื้นฐาน AWK
รูปแบบพื้นฐานของคำสั่ง awk เป็นดังนี้:
awk 'pattern {action}' input-file > output-file
นี่หมายถึง: นำแต่ละบรรทัดของ input file มา ถ้าบรรทัดนั้นมี pattern ให้ apply action กับบรรทัดนั้น และเขียนบรรทัดที่ได้ไปยัง output file หาก pattern ถูกละเว้น action จะถูกนำไปใช้กับทุกบรรทัด ตัวอย่างเช่น:
awk '{ print $5 }' table1.txt > output1.txt
คำสั่งข้างต้นจะนำ element ของคอลัมน์ที่ 5 ของแต่ละบรรทัด เขียนเป็นบรรทัดใน output file "output.txt" ตัวแปร '$4' หมายถึงคอลัมน์ที่ 4 เช่นเดียวกัน คุณสามารถเข้าถึงคอลัมน์ที่ 1, 2, 3 ได้ด้วย $1, $2, $3 เป็นต้น โดยค่าเริ่มต้น คอลัมน์ถือว่าคั่นด้วยช่องว่างหรือแท็บ (ที่เรียกว่า white space) ดังนั้น หาก input file "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
คำสั่งจะเขียนบรรทัดต่อไปนี้ลงใน output file "output1.txt":
545, 723, 610, 118, 482, 335, 271, 373,
หากคอลัมน์คั่นด้วยสิ่งอื่นนอกจากช่องว่างหรือแท็บ เช่น คอมมา คุณสามารถระบุได้ในคำสั่ง awk ดังนี้:
awk -F, '{ print $3 }' table1.txt > output1.txt
นี่จะเลือก element จากคอลัมน์ที่ 3 ของแต่ละบรรทัด หากคอลัมน์ถือว่าคั่นด้วยคอมมา ดังนั้น output ในกรณีนี้จะเป็น:
Title 545 Title 723 Title 610 Title 118 Title 482 Title 335 Title 271 Title 373
Conditional Expressions ใน AWK
รายการคำสั่งภายใน curly brackets ('{','}') เรียกว่า block หากคุณวาง conditional expression หน้าบล็อก คำสั่งภายในบล็อกจะถูก execute ก็ต่อเมื่อเงื่อนไขเป็นจริง
awk '$7=="\$7.30" { print $3 }' table1.txt
ในกรณีนี้ เงื่อนไขคือ $7=="\$7.30" ซึ่งหมายถึง element ในคอลัมน์ที่ 7 เท่ากับ $7.30 backslash หน้าตัว $ ใช้เพื่อป้องกันไม่ให้ระบบตีความ $7 เป็นตัวแปร แต่นำตัว $ มันเองในความหมายตัวอักษร
ดังนั้น คำสั่ง awk นี้จะพิมพ์ element ที่คอลัมน์ที่ 3 ของแต่ละบรรทัดที่มี "$7.30" ในคอลัมน์ที่ 7
คุณยังสามารถใช้ regular expressions เป็นเงื่อนไขได้ ตัวอย่างเช่น:
awk '/30/ { print $3 }' table1.txt
สตริงระหว่างสอง slash ('/') คือ regular expression ในกรณีนี้คือแค่สตริง "30" หมายถึง หากบรรทัดใดมีสตริง "30" ระบบจะพิมพ์ element ที่คอลัมน์ที่ 3 ของบรรทัดนั้น Output ในตัวอย่างข้างต้นจะเป็น:
Timberlake, Gaga, Presley,
ทำการคำนวณใน AWK
หาก element ในตารางเป็นตัวเลข awk สามารถรันการคำนวณได้ ตัวอย่างเช่น:
awk '{ print ($2 * $3) + $7 }'
นอกจากตัวแปรที่เข้าถึง element ของแถวปัจจุบัน ($1, $2, เป็นต้น) ยังมีตัวแปร $0 ซึ่งหมายถึงแถวทั้งหมด (whole line) และตัวแปร NF ซึ่งเก็บจำนวนฟิลด์
คุณยังสามารถกำหนดตัวแปรใหม่ได้ ตัวอย่างเช่น:
awk '{ sum=0; for (col=1; col<=NF; col++) sum += $col; print sum; }'
นี่จะคำนวณและพิมพ์ผลรวมของ element ทั้งหมดของแต่ละแถว
คำสั่ง Awk มักถูกรวมกับคำสั่ง sed