开发手册 欢迎您!
软件开发者资料库

AWK - 基本语法

AWK基本语法 - 学习AWK编程以及如何开发环境,概述,工作流,基本语法,基本示例,内置变量,运算符,正则表达式,数组,控制流,循环,内置函数,用户定义函数,输出重定向,漂亮的印刷。

AWK使用简单.我们可以直接从命令行或以包含AWK命令的文本文件的形式提供AWK命令.

AWK命令行

我们可以在命令行的单引号内指定一个AWK命令,如图所示 :

awk [options] file ...

示例

考虑一个文本文件 marks.txt ,其中包含以下内容 :

1) Amit     Physics    802) Rahul    Maths      903) Shyam    Biology    874) Kedar    English    855) Hari     History    89

让我们使用AWK显示文件的完整内容,如下所示;

示例

[jerry]$ awk '{print}' marks.txt

在执行此代码时,您会得到以下结果 :

输出

1) Amit     Physics    802) Rahul    Maths      903) Shyam    Biology    874) Kedar    English    855) Hari     History    89

AWK程序文件

我们可以在脚本文件中提供AWK命令,如下所示 :

awk [options] -f file ....

首先,创建一个文本文件 command.awk 包含AWK命令,如下所示 :

{print}

现在我们可以指示AWK从文本文件中读取命令并执行操作.在这里,我们获得了与上例中所示相同的结果.

示例

[jerry]$ awk -f command.awk marks.txt

在执行此代码时,您得到以下结果 :

输出

1) Amit  Physics 802) Rahul Maths   903) Shyam Biology 874) Kedar English 855) 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: 1ARGIND: 0ARGV: array, 1 elementsBINMODE: 0CONVFMT: "%.6g"ERRNO: ""FIELDWIDTHS: ""FILENAME: ""FNR: 0FPAT: "[^[:space:]]+"FS: " "IGNORECASE: 0LINT: 0NF: 0NR: 0OFMT: "%.6g"OFS: " "ORS: "\n"RLENGTH: 0RS: "\n"RSTART: 0RT: ""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=valShort 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 [=致命]选项

此选项可以检查非可移植或可疑的构造.当提供参数致命时,它会将警告消息视为错误.以下示例演示了此 :

示例

[jerry]$ awk --lint '' /bin/ls

在执行此代码时,您会得到以下结果 :

输出

awk: cmd. line:1: warning: empty program text on command lineawk: cmd. line:1: warning: source file does not end in newlineawk: warning: no program text at all!

--posix选项

此选项打开严格的POSIX兼容性,其中所有常见和特定gawk扩展名被禁用.

--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"   }

- 传统选项

此选项禁用所有特定于gawk的扩展.

--version选项

此选项显示AWK程序的版本信息.

示例

[jerry]$ awk --version

执行此代码时,会产生以下结果 :

输出

GNU Awk 4.0.1Copyright (C) 1989, 1991-2012 Free Software Foundation.