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 89
Hã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.txt
Khi 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 89
Tệ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.txt
Khi 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 89
Tù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 = Jerry
Tù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.out
Khi 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 --help
Khi 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 --version
Tù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/ls
Khi 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.out
Khi 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 --version
Khi 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.