AWK基本語法
AWK使用簡單,我們可以直接從命令行提供AWK或在具有AWK命令的文本文件的形式的命令。本教程介紹調用AWK的例子,這兩個方法:
AWK命令行
以下是我們可指定單引號在命令行本身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顯示如下文件的全部內容:
[jerry]$ awk '{print}' marks.txt
在執行上面的代碼後,得到以下結果:
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 ....
首先,創建一個包含AWK命令的文本command.awk文件,如下所示:
{print}
現在,我們可以命令AWK從文本文件中讀取命令並執行操作。在這裏,實現相同的結果中所示的上述示例。
[jerry]$ awk -f command.awk marks.txt
在執行上面的代碼後,得到以下結果:
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
AWK標準選項
AWK支持從命令行來提供以下標準選項。
-v 選項
此選項分配一個值的變量。它允許程序執行前分配。下面簡單的例子介紹 -v 選項的使用。
[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'
在執行上面的代碼後,得到以下結果:
Name = Jerry
--dump-variables[=file] 選項
它打印全局變量和最終值到文件的一個排序列表。默認的文件是awkvars.out。
[jerry]$ awk --dump-variables '' [jerry]$ cat awkvars.out
在執行上面的代碼後,得到以下結果:
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 選項
此選項將在標準輸出的幫助信息。
[jerry]$ awk --help
在執行上面的代碼後,得到以下結果:
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] 選項
該選項允許檢查非便攜式或可疑的構造。當提供的一個參數是致命,它會警告消息爲錯誤。下面簡單的例子說明了這一點:
[jerry]$ awk --lint '' /bin/ls
在執行上面的代碼後,得到以下結果:
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兼容,其中所有普通和awk特定的擴展將被禁用。
--profile[=file] 選項
這個選項生成文件的程序相當於打印版本。默認的文件是awkprof.out。下面簡單的例子說明了這一點:
[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print} END{printf"---|Footer|---\n"}' marks.txt > /dev/null [jerry]$ cat awkprof.out
在執行上面的代碼後,得到以下結果:
# 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"
}
--traditional 選項
此選項可以禁用所有gawk特定的擴展。
--version 選項
此選項顯示AWK程序的版本信息。
[jerry]$ awk --version
當上述代碼被執行時,它會產生以下結果:
GNU Awk 4.0.1
Copyright (C) 1989, 1991-2012 Free Software Foundation.