AWK - ไวยากรณ์พื้นฐาน

AWK ใช้งานง่าย เราสามารถให้คำสั่ง AWK ได้โดยตรงจากบรรทัดคำสั่งหรือในรูปแบบของไฟล์ข้อความที่มีคำสั่ง AWK

AWK Command Line

เราสามารถระบุคำสั่ง AWK ภายในเครื่องหมายคำพูดเดียวที่บรรทัดคำสั่งดังที่แสดง -

awk [options] file ...

ตัวอย่าง

พิจารณาไฟล์ข้อความ marks.txt โดยมีเนื้อหาดังต่อไปนี้ -

1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89

ให้เราแสดงเนื้อหาทั้งหมดของไฟล์โดยใช้ AWK ดังนี้ -

Example

[jerry]$ awk '{print}' marks.txt

ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -

Output

1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89

ไฟล์โปรแกรม AWK

เราสามารถจัดเตรียมคำสั่ง AWK ในไฟล์สคริปต์ดังที่แสดง -

awk [options] -f file ....

ขั้นแรกสร้างไฟล์ข้อความ command.awk มีคำสั่ง AWK ดังแสดงด้านล่าง -

{print}

ตอนนี้เราสามารถสั่งให้ AWK อ่านคำสั่งจากไฟล์ข้อความและดำเนินการได้ ที่นี่เราได้ผลลัพธ์เช่นเดียวกับที่แสดงในตัวอย่างด้านบน

Example

[jerry]$ awk -f command.awk marks.txt

ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -

Output

1) Amit  Physics 80
2) Rahul Maths   90
3) Shyam Biology 87
4) Kedar English 85
5) Hari  History 89

ตัวเลือกมาตรฐาน AWK

AWK รองรับตัวเลือกมาตรฐานต่อไปนี้ซึ่งสามารถให้ได้จากบรรทัดคำสั่ง

ตัวเลือก -v

ตัวเลือกนี้กำหนดค่าให้กับตัวแปร อนุญาตให้ทำการมอบหมายก่อนการทำงานของโปรแกรม ตัวอย่างต่อไปนี้อธิบายถึงการใช้อ็อพชัน -v

Example

[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'

ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -

Output

Name = Jerry

อ็อพชัน --dump-variable [= file]

มันพิมพ์รายการตัวแปรส่วนกลางที่เรียงลำดับและค่าสุดท้ายไปยังไฟล์ ไฟล์เริ่มต้นคือawkvars.out.

Example

[jerry]$ awk --dump-variables ''
[jerry]$ cat awkvars.out

ในการรันโค้ดด้านบนคุณจะได้ผลลัพธ์ดังต่อไปนี้ -

Output

ARGC: 1
ARGIND: 0
ARGV: array, 1 elements
BINMODE: 0
CONVFMT: "%.6g"
ERRNO: ""
FIELDWIDTHS: ""
FILENAME: ""
FNR: 0
FPAT: "[^[:space:]]+"
FS: " "
IGNORECASE: 0
LINT: 0
NF: 0
NR: 0
OFMT: "%.6g"
OFS: " "
ORS: "\n"
RLENGTH: 0
RS: "\n"
RSTART: 0
RT: ""
SUBSEP: "\034"
TEXTDOMAIN: "messages"

ตัวเลือก - help

ตัวเลือกนี้จะพิมพ์ข้อความวิธีใช้บนเอาต์พุตมาตรฐาน

Example

[jerry]$ awk --help

ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -

Output

Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options : GNU long options: (standard)
   -f progfile                --file=progfile
   -F fs                      --field-separator=fs
   -v var=val                 --assign=var=val
Short options : GNU long options: (extensions)
   -b                         --characters-as-bytes
   -c                         --traditional
   -C                         --copyright
   -d[file]                   --dump-variables[=file]
   -e 'program-text'          --source='program-text'
   -E file                    --exec=file
   -g                         --gen-pot
   -h                         --help
   -L [fatal]                 --lint[=fatal]
   -n                         --non-decimal-data
   -N                         --use-lc-numeric
   -O                         --optimize
   -p[file]                   --profile[=file]
   -P                         --posix
   -r                         --re-interval
   -S                         --sandbox
   -t                         --lint-old
   -V                         --version

ตัวเลือก --lint [= fatal]

ตัวเลือกนี้ช่วยในการตรวจสอบโครงสร้างที่ไม่สามารถพกพาได้หรือน่าสงสัย เมื่อเกิดข้อโต้แย้งfatalมีให้โดยถือว่าข้อความเตือนเป็นข้อผิดพลาด ตัวอย่างต่อไปนี้แสดงให้เห็นถึงสิ่งนี้ -

Example

[jerry]$ awk --lint '' /bin/ls

ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -

Output

awk: cmd. line:1: warning: empty program text on command line
awk: cmd. line:1: warning: source file does not end in newline
awk: warning: no program text at all!

ตัวเลือก --posix

ตัวเลือกนี้จะเปิดใช้งานความเข้ากันได้ของ POSIX ที่เข้มงวดซึ่งส่วนขยายทั่วไปและเฉพาะ gawk ทั้งหมดถูกปิดใช้งาน

อ็อพชัน --profile [= file]

ตัวเลือกนี้จะสร้างโปรแกรมเวอร์ชันที่พิมพ์ออกมาสวยในไฟล์ ไฟล์ดีฟอลต์คือawkprof.out. ตัวอย่างง่ายๆด้านล่างแสดงสิ่งนี้ -

Example

[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print} 
END{printf"---|Footer|---\n"}' marks.txt > /dev/null 
[jerry]$ cat awkprof.out

ในการเรียกใช้รหัสนี้คุณจะได้รับผลลัพธ์ดังต่อไปนี้ -

Output

# gawk profile, created Sun Oct 26 19:50:48 2014

   # BEGIN block(s)

   BEGIN {
      printf "---|Header|--\n"
   }

   # Rule(s) {
      print $0
   }

   # END block(s)

   END {
      printf "---|Footer|---\n"
   }

ตัวเลือก - แบบดั้งเดิม

ตัวเลือกนี้ปิดใช้งานส่วนขยายเฉพาะ gawk ทั้งหมด

ตัวเลือก --version

ตัวเลือกนี้แสดงข้อมูลเวอร์ชันของโปรแกรม AWK

Example

[jerry]$ awk --version

เมื่อรหัสนี้ถูกเรียกใช้งานจะให้ผลลัพธ์ดังต่อไปนี้ -

Output

GNU Awk 4.0.1
Copyright (C) 1989, 1991-2012 Free Software Foundation.