AWK使用簡(jiǎn)單,我們可以直接從命令行提供AWK或在具有AWK命令的文本文件的形式的命令。本教程介紹調(diào)用AWK的例子,這兩個(gè)方法:
以下是我們可指定單引號(hào)在命令行本身AWK命令的形式:
awk [options] file ...
考慮我們有一個(gè)文本文件marks.txt將要處理,它有以下內(nèi)容:
1) Amit Physics 80 2) Rahul Maths 90 3) Shyam Biology 87 4) Kedar English 85 5) Hari History 89
讓我們使用AWK顯示如下文件的全部?jī)?nèi)容:
[jerry]$ awk '{print}' marks.txt
在執(zhí)行上面的代碼后,得到以下結(jié)果:
1) Amit Physics 80 2) Rahul Maths 90 3) Shyam Biology 87 4) Kedar English 85 5) Hari History 89
以下是第二種形式,提供AWK命令在腳本文件中:
awk [options] -f file ....
首先,創(chuàng)建一個(gè)包含AWK命令的文本command.awk文件,如下所示:
{print}
現(xiàn)在,我們可以命令A(yù)WK從文本文件中讀取命令并執(zhí)行操作。在這里,實(shí)現(xiàn)相同的結(jié)果中所示的上述示例。
[jerry]$ awk -f command.awk marks.txt
在執(zhí)行上面的代碼后,得到以下結(jié)果:
1) Amit Physics 80 2) Rahul Maths 90 3) Shyam Biology 87 4) Kedar English 85 5) Hari History 89
AWK支持從命令行來(lái)提供以下標(biāo)準(zhǔn)選項(xiàng)。
此選項(xiàng)分配一個(gè)值的變量。它允許程序執(zhí)行前分配。下面簡(jiǎn)單的例子介紹 -v 選項(xiàng)的使用。
[jerry]$ awk -v name=Jerry 'BEGIN{printf "Name = %s\n", name}'
在執(zhí)行上面的代碼后,得到以下結(jié)果:
Name = Jerry
它打印全局變量和最終值到文件的一個(gè)排序列表。默認(rèn)的文件是awkvars.out。
[jerry]$ awk --dump-variables '' [jerry]$ cat awkvars.out
在執(zhí)行上面的代碼后,得到以下結(jié)果:
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"
此選項(xiàng)將在標(biāo)準(zhǔn)輸出的幫助信息。
[jerry]$ awk --help
在執(zhí)行上面的代碼后,得到以下結(jié)果:
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
該選項(xiàng)允許檢查非便攜式或可疑的構(gòu)造。當(dāng)提供的一個(gè)參數(shù)是致命,它會(huì)警告消息為錯(cuò)誤。下面簡(jiǎn)單的例子說(shuō)明了這一點(diǎn):
[jerry]$ awk --lint '' /bin/ls
在執(zhí)行上面的代碼后,得到以下結(jié)果:
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!
此選項(xiàng)打開嚴(yán)格的POSIX兼容,其中所有普通和awk特定的擴(kuò)展將被禁用。
這個(gè)選項(xiàng)生成文件的程序相當(dāng)于打印版本。默認(rèn)的文件是awkprof.out。下面簡(jiǎn)單的例子說(shuō)明了這一點(diǎn):
[jerry]$ awk --profile 'BEGIN{printf"---|Header|--\n"} {print} END{printf"---|Footer|---\n"}' marks.txt > /dev/null [jerry]$ cat awkprof.out
在執(zhí)行上面的代碼后,得到以下結(jié)果:
# 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" }
此選項(xiàng)可以禁用所有g(shù)awk特定的擴(kuò)展。
此選項(xiàng)顯示AWK程序的版本信息。
[jerry]$ awk --version
當(dāng)上述代碼被執(zhí)行時(shí),它會(huì)產(chǎn)生以下結(jié)果:
GNU Awk 4.0.1 Copyright (C) 1989, 1991-2012 Free Software Foundation.