ค้นหาเว็บไซต์

วิธีเขียนสคริปต์โดยใช้ภาษาการเขียนโปรแกรม Awk - ตอนที่ 13


ตลอดระยะเวลาตั้งแต่เริ่มต้นซีรีส์ Awk จนถึงตอนที่ 12 เราได้เขียนคำสั่งและโปรแกรม Awk ขนาดเล็กบนบรรทัดคำสั่งและในเชลล์สคริปต์ตามลำดับ

อย่างไรก็ตาม Awk ก็เหมือนกับที่ Shell เป็นภาษาที่ตีความ ดังนั้น จากสิ่งที่เราได้ศึกษามาทั้งหมดตั้งแต่เริ่มต้นซีรีส์นี้ คุณจึงสามารถเขียนสคริปต์ปฏิบัติการ Awk ได้แล้ว

เช่นเดียวกับที่เราเขียนเชลล์สคริปต์ สคริปต์ Awk เริ่มต้นด้วยบรรทัด:

#! /path/to/awk/utility -f 

ตัวอย่างเช่น ในระบบของฉัน ยูทิลิตี Awk อยู่ใน /usr/bin/awk ดังนั้น ฉันจะเริ่มสคริปต์ Awk ดังต่อไปนี้:

#! /usr/bin/awk -f 

อธิบายบรรทัดด้านบน:

  1. #! – เรียกว่า Shebang ซึ่งระบุล่ามสำหรับคำแนะนำในสคริปต์
  2. /usr/bin/awk – เป็นล่าม
  3. -f – ตัวเลือกล่าม ใช้ในการอ่านไฟล์โปรแกรม

ดังที่กล่าวไปแล้ว ให้เรามาดูตัวอย่างของสคริปต์ปฏิบัติการ Awk กันดีกว่า โดยเราสามารถเริ่มด้วยสคริปต์ง่ายๆ ด้านล่างนี้ ใช้โปรแกรมแก้ไขที่คุณชื่นชอบเพื่อเปิดไฟล์ใหม่ดังนี้:

vi script.awk

และวางโค้ดด้านล่างลงในไฟล์:

#!/usr/bin/awk -f 
BEGIN { printf "%s\n","Writing my first Awk executable script!" }

บันทึกไฟล์และออก จากนั้นทำให้สคริปต์ปฏิบัติการได้โดยออกคำสั่งด้านล่าง:

chmod +x script.awk

หลังจากนั้นให้รัน:

./script.awk
ผลลัพธ์ตัวอย่าง
Writing my first Awk executable script!

โปรแกรมเมอร์คนสำคัญต้องถามว่า “ความคิดเห็นอยู่ที่ไหน ” ใช่แล้ว คุณยังสามารถรวมความคิดเห็นไว้ในสคริปต์ Awk ของคุณได้ การเขียนความคิดเห็นในโค้ดของคุณถือเป็นแนวทางการเขียนโปรแกรมที่ดีเสมอไป

ช่วยให้โปรแกรมเมอร์คนอื่นๆ มองโค้ดของคุณเพื่อทำความเข้าใจสิ่งที่คุณพยายามบรรลุผลในแต่ละส่วนของสคริปต์หรือไฟล์โปรแกรม

ดังนั้นคุณสามารถรวมความคิดเห็นไว้ในสคริปต์ด้านบนได้ดังนี้

#!/usr/bin/awk -f 

#This is how to write a comment in Awk
#using the BEGIN special pattern to print a sentence 

BEGIN { printf "%s\n","Writing my first Awk executable script!" }

ต่อไป เราจะดูตัวอย่างที่เราอ่านอินพุตจากไฟล์ เราต้องการค้นหาผู้ใช้ระบบชื่อ aaronkilik ในไฟล์บัญชี /etc/passwd จากนั้นพิมพ์ชื่อผู้ใช้ ผู้ใช้ ID และผู้ใช้ GID ดังนี้:

ด้านล่างนี้คือเนื้อหาของสคริปต์ของเราชื่อ second.awk

#! /usr/bin/awk -f 

#use BEGIN sepecial character to set FS built-in variable
BEGIN { FS=":" }

#search for username: aaronkilik and print account details 
/aaronkilik/ { print "Username :",$1,"User ID :",$3,"User GID :",$4 }

บันทึกไฟล์และออก ทำให้สคริปต์ปฏิบัติการได้และดำเนินการดังต่อไปนี้:

chmod +x second.awk
./second.awk /etc/passwd
ผลลัพธ์ตัวอย่าง
Username : aaronkilik User ID : 1000 User GID : 1000

ในตัวอย่างสุดท้ายด้านล่าง เราจะใช้คำสั่ง do while เพื่อพิมพ์ตัวเลขตั้งแต่ 0-10:

ด้านล่างนี้คือเนื้อหาของสคริปต์ของเราชื่อ do.awk

#! /usr/bin/awk -f 

#printing from 0-10 using a do while statement 
#do while statement 
BEGIN {
#initialize a counter
x=0

do {
    print x;
    x+=1;
}
while(x<=10)
}

หลังจากบันทึกไฟล์แล้ว ให้ทำให้สคริปต์ทำงานได้เหมือนที่เราเคยทำมาก่อน หลังจากนั้นให้รัน:

chmod +x do.awk
./do.awk
ผลลัพธ์ตัวอย่าง
0
1
2
3
4
5
6
7
8
9
10

สรุป

เรามาถึงจุดสิ้นสุดของซีรีส์ Awk ที่น่าสนใจนี้แล้ว ฉันหวังว่าคุณจะได้เรียนรู้มากมายจากทั้ง 13 ส่วนเพื่อเป็นการแนะนำภาษาการเขียนโปรแกรม Awk

ดังที่ฉันได้กล่าวไว้ตั้งแต่ต้นแล้วว่า Awk เป็นภาษาประมวลผลข้อความที่สมบูรณ์ ด้วยเหตุนี้ คุณจึงสามารถเรียนรู้แง่มุมอื่นๆ เพิ่มเติมของภาษาการเขียนโปรแกรม Awk ได้ เช่น ตัวแปรสภาพแวดล้อม อาร์เรย์ ฟังก์ชัน (ในตัวและกำหนดโดยผู้ใช้) และอื่นๆ อีกมากมาย

ยังมีส่วนเพิ่มเติมของการเขียนโปรแกรม Awk ที่ต้องเรียนรู้และฝึกฝน ดังนั้นด้านล่างนี้ฉันได้ให้ลิงก์ไปยังแหล่งข้อมูลออนไลน์ที่สำคัญที่คุณสามารถใช้เพื่อขยายทักษะการเขียนโปรแกรม Awk สิ่งเหล่านี้ไม่ใช่ทั้งหมดที่คุณต้องการ คุณยังสามารถดูได้อีกด้วย ออกไปหาหนังสือการเขียนโปรแกรม Awk ที่เป็นประโยชน์

ลิงก์อ้างอิง: คู่มือผู้ใช้ GNU Awk และการเขียนโปรแกรมภาษา AWK

สำหรับความคิดใด ๆ ที่คุณต้องการแบ่งปันหรือคำถามให้ใช้แบบฟอร์มความคิดเห็นด้านล่าง อย่าลืมติดต่อกับ Tecmint เสมอเพื่อรับชมซีรีส์ที่น่าตื่นเต้นยิ่งขึ้น