AWK - Cú pháp cơ bản
AWK rất dễ sử dụng. Chúng tôi có thể cung cấp các lệnh AWK trực tiếp từ dòng lệnh hoặc dưới dạng tệp văn bản chứa các lệnh AWK.
Dòng lệnh AWK
Chúng ta có thể chỉ định một lệnh AWK trong dấu ngoặc kép tại dòng lệnh như được hiển thị:
awk [options] file ...Thí dụ
Xem xét một tệp văn bản marks.txt với nội dung sau -
1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89Hãy để chúng tôi hiển thị toàn bộ nội dung của tệp bằng AWK như sau:
Example
[jerry]$ awk '{print}' marks.txtKhi thực thi mã này, bạn nhận được kết quả sau:
Output
1) Amit     Physics    80
2) Rahul    Maths      90
3) Shyam    Biology    87
4) Kedar    English    85
5) Hari     History    89Tệp chương trình AWK
Chúng tôi có thể cung cấp các lệnh AWK trong một tệp kịch bản như minh họa -
awk [options] -f file ....Đầu tiên, tạo một tệp văn bản command.awk chứa lệnh AWK như hình dưới đây -
{print}Bây giờ chúng ta có thể hướng dẫn AWK đọc lệnh từ tệp văn bản và thực hiện hành động. Ở đây, chúng ta đạt được kết quả tương tự như trong ví dụ trên.
Example
[jerry]$ awk -f command.awk marks.txtKhi thực thi mã này, bạn nhận được kết quả sau:
Output
1) Amit  Physics 80
2) Rahul Maths   90
3) Shyam Biology 87
4) Kedar English 85
5) Hari  History 89Tùy chọn tiêu chuẩn AWK
AWK hỗ trợ các tùy chọn tiêu chuẩn sau có thể được cung cấp từ dòng lệnh.
Tùy chọn -v
Tùy chọn này gán giá trị cho một biến. Nó cho phép gán trước khi thực hiện chương trình. Ví dụ sau mô tả cách sử dụng tùy chọn -v.
Example
[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'Khi thực thi mã này, bạn nhận được kết quả sau:
Output
Name = JerryTùy chọn --dump-variable [= file]
Nó in danh sách các biến toàn cục đã được sắp xếp và giá trị cuối cùng của chúng vào tệp. Tệp mặc định làawkvars.out.
Example
[jerry]$ awk --dump-variables ''
[jerry]$ cat awkvars.outKhi thực thi đoạn mã trên, bạn nhận được kết quả sau:
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"Tùy chọn --help
Tùy chọn này in thông báo trợ giúp trên đầu ra chuẩn.
Example
[jerry]$ awk --helpKhi thực thi mã này, bạn nhận được kết quả sau:
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                         --versionTùy chọn --lint [= Fat]
Tùy chọn này cho phép kiểm tra các cấu trúc không di động hoặc không rõ ràng. Khi một cuộc tranh cãifatalđược cung cấp, nó coi các thông báo cảnh báo là lỗi. Ví dụ sau đây chứng minh điều này -
Example
[jerry]$ awk --lint '' /bin/lsKhi thực thi mã này, bạn nhận được kết quả sau:
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!Tùy chọn --posix
Tùy chọn này bật khả năng tương thích POSIX nghiêm ngặt, trong đó tất cả các tiện ích mở rộng phổ biến và tiện ích mở rộng dành riêng cho gawk đều bị tắt.
Tùy chọn --profile [= file]
Tùy chọn này tạo ra một phiên bản chương trình được in đẹp trong tệp. Tệp mặc định làawkprof.out. Ví dụ đơn giản dưới đây minh họa điều này -
Example
[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print} 
END{printf"---|Footer|---\n"}' marks.txt > /dev/null 
[jerry]$ cat awkprof.outKhi thực thi mã này, bạn nhận được kết quả sau:
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"
   }Tùy chọn --traditional
Tùy chọn này vô hiệu hóa tất cả các tiện ích mở rộng dành riêng cho gawk.
Tùy chọn --version
Tùy chọn này hiển thị thông tin phiên bản của chương trình AWK.
Example
[jerry]$ awk --versionKhi mã này được thực thi, nó tạo ra kết quả sau:
Output
GNU Awk 4.0.1
Copyright (C) 1989, 1991-2012 Free Software Foundation.