คำสั่ง awk เป็นวิธีที่มีประสิทธิภาพในการประมวลผลหรือวิเคราะห์ไฟล์ข้อความโดยเฉพาะอย่างยิ่งไฟล์ข้อมูลที่จัดโดยบรรทัด (แถว) และคอลัมน์
ง่าย awk คำสั่งสามารถเรียกใช้จากบรรทัดคำสั่ง งานที่ซับซ้อนมากขึ้นควรเขียนเป็นโปรแกรม awk (เรียกว่าสคริปต์ awk) ไปยังไฟล์
รูปแบบพื้นฐานของคำสั่ง awk มีลักษณะดังนี้:
awk 'pattern {action}' input-file> ไฟล์ที่ส่งออก
ซึ่งหมายความว่า: ใช้แต่ละบรรทัดของแฟ้มใส่; ถ้าบรรทัดประกอบด้วยรูปแบบใช้การดำเนินการกับบรรทัดและเขียนบรรทัดผลลัพธ์เป็นไฟล์ผลลัพธ์ หากรูปแบบถูกละไว้การดำเนินการจะใช้กับทุกบรรทัด ตัวอย่างเช่น: awk '{print $ 5}' table1.txt> output1.txt คำสั่งนี้ใช้องค์ประกอบของคอลัมน์ที่ 5 ของแต่ละบรรทัดและเขียนเป็นบรรทัดในไฟล์ที่ส่งออก "output.txt" ตัวแปร '$ 4' หมายถึงคอลัมน์ที่สอง ในทำนองเดียวกันคุณสามารถเข้าถึงคอลัมน์แรกสองและสามโดยมีค่า 1 $ 2 $ 3 เป็นต้นโดยค่าเริ่มต้นคอลัมน์จะถูกคั่นด้วยช่องว่างหรือแท็บ (เรียกว่าช่องว่างสีขาว) ดังนั้นหากไฟล์ input "table1.txt" มีบรรทัดเหล่านี้: 1, จัสตินทิมเบอร์เลค, ชื่อเรื่อง 545, ราคา 7.30 ดอลลาร์2, Taylor Swift, ชื่อเรื่อง 723, ราคา $ 7.903, Mick Jagger, Title 610, ราคา $ 7.904, เลดี้กาก้า, ชื่อเรื่อง 118, ราคา 7.30 ดอลลาร์5, Johnny Cash, ชื่อเรื่อง 482, ราคา 6.50 ดอลลาร์6, Elvis Presley, Title 335, ราคา $ 7.307, John Lennon, Title 271, ราคา $ 7.908, Michael Jackson, Title 373, ราคา 5.50 ดอลลาร์ จากนั้นคำสั่งจะเขียนบรรทัดต่อไปนี้ไปยังไฟล์ที่ส่งออก "output1.txt": 545,723,610,118,482,335,271,373, ถ้าตัวแบ่งคอลัมน์เป็นสิ่งอื่นที่ไม่ใช่ช่องว่างหรือแท็บเช่นเครื่องหมายจุลภาคคุณสามารถระบุได้ว่าในคำสั่ง awk ดังนี้: awk -F, '{print $ 3}' table1.txt> output1.txt ซึ่งจะเลือกองค์ประกอบจากคอลัมน์ 3 ของแต่ละบรรทัดหากคอลัมน์มีการพิจารณาให้คั่นด้วยเครื่องหมายจุลภาค ดังนั้นเอาท์พุทในกรณีนี้จะเป็น: ชื่อ 545 หัวข้อ 723 หัวข้อ 610 หัวข้อ 118 หัวข้อ 482 หัวข้อ 335 หัวข้อ 271 หัวข้อ 373 รายการคำสั่งภายในวงเล็บปีกกา ('{', '}') เรียกว่า block ถ้าคุณใส่นิพจน์เงื่อนไขไว้หน้าบล็อกคำสั่งภายในบล็อกจะถูกเรียกใช้เฉพาะเมื่อเงื่อนไขเป็นจริงเท่านั้น awk '$ 7 == " $ 7.30" {print $ 3}' table1.txt ในกรณีนี้เงื่อนไขคือ $ 7 == " $ 7.30" ซึ่งหมายความว่าองค์ประกอบที่คอลัมน์ 7 มีค่าเท่ากับ $ 7.30 เครื่องหมายทับขวาที่ด้านหน้าของเครื่องหมายดอลลาร์ถูกใช้เพื่อป้องกันไม่ให้ระบบแปลค่าตัวแปรเป็น 7 เหรียญแทนการใช้เครื่องหมายดอลลาร์แทนตัวอักษร ดังนั้นคำสั่ง awk นี้จะพิมพ์องค์ประกอบที่คอลัมน์ที่ 3 ของแต่ละบรรทัดที่มี "$ 7.30" ที่คอลัมน์ 7 นอกจากนี้คุณยังสามารถใช้นิพจน์ปกติเป็นเงื่อนไขได้เช่นกัน ตัวอย่างเช่น: awk '/ 30 / {print $ 3}' table1.txt สายอักขระระหว่างเครื่องหมายทับสอง ('/') คือนิพจน์ปกติ ในกรณีนี้เป็นเพียงสตริง "30" ซึ่งหมายความว่าถ้าบรรทัดประกอบด้วยสตริง "30" ระบบจะพิมพ์องค์ประกอบที่คอลัมน์ที่ 3 ของบรรทัดนั้น ผลลัพธ์ในตัวอย่างข้างต้นจะเป็น: ทิมเบอร์เลค กาก้า เพรสลีย์ ถ้าองค์ประกอบของตารางเป็นตัวเลข awk สามารถเรียกใช้การคำนวณได้เช่นในตัวอย่างนี้: awk '{พิมพ์ ($ 2 * $ 3) + $ 7}' นอกเหนือจากตัวแปรที่เข้าถึงองค์ประกอบของแถวปัจจุบัน ($ 1, $ 2, ฯลฯ ) มีตัวแปร $ 0 ซึ่งหมายถึงแถวสมบูรณ์ (บรรทัด) และตัวแปร NF ที่มีจำนวนฟิลด์ นอกจากนี้คุณยังสามารถกำหนดตัวแปรใหม่เช่นในตัวอย่างนี้: awk '{sum = 0; สำหรับ (col = 1; col <= NF; col ++) sum + = $ col; ผลรวมพิมพ์; }' คำนวณและพิมพ์ผลรวมขององค์ประกอบทั้งหมดของแต่ละแถว คำสั่ง Awk จะรวมกันบ่อยๆกับคำสั่ง sed