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.