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

AWK - 基本示例

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

本章介绍了几个有用的AWK命令及其相应的示例.考虑使用以下内容处理文本文件 marks.txt :

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

打印列或字段

您可以指示AWK仅输入输入字段中的某些列.以下示例演示了此 :

示例

[jerry]$ awk '{print $3 "\t" $4}' marks.txt

执行此代码后,您将得到以下结果 :

输出

Physics   80Maths     90Biology   87English   85History   89

在文件 marks.txt 中,第三列包含主题名称,第四列包含在特定主题中获得的标记.让我们使用AWK打印命令打印这两列.在上面的示例中, $ 3和$ 4 分别代表输入记录中的第三个和第四个字段.

打印所有行

默认情况下,AWK打印所有匹配模式的行.

示例

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

执行此代码后,您将得到以下结果 :

输出

2) Rahul    Maths     903) Shyam    Biology   874) Kedar    English   855) Hari     History   89

在上面的例子中,我们搜索表单模式 a .当模式匹配成功时,它从主体块执行命令.在没有身体阻滞 : 采取默认操作,打印记录.因此,以下命令产生相同的结果 :

示例

[jerry]$ awk '/a/' marks.txt

按模式打印列

当模式匹配成功时,AWK打印整个默认记录.但您可以指示AWK仅打印某些字段.例如,以下示例在模式匹配成功时打印第三个和第四个字段.

示例

[jerry]$ awk '/a/ {print $3 "\t" $4}' marks.txt

执行此代码后,您将获得以下结果 :

输出

Maths    90Biology  87English  85History  89

按任意顺序打印列

您可以按任何顺序打印列.例如,以下示例打印第四列,后跟第三列.

示例

[jerry]$ awk '/a/ {print $4 "\t" $3}' marks.txt

执行上述代码后,您将获得以下内容结果 :

输出

90   Maths87   Biology85   English89   History

计算和打印匹配模式

让我们看一个可以计算的例子打印模式匹配成功的行数.

示例

[jerry]$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt

执行此代码后,您将获得以下内容结果 : 去;

输出

Count = 4

在这个例子中,我们增加counter wh的值模式匹配成功,我们在END块中打印此值.请注意,与其他编程语言不同,在使用它之前无需声明变量.

打印超过18个字符的行

让我们只打印那些包含超过18个字符的行.

示例

[jerry]$ awk 'length($0) > 18' marks.txt

执行此代码后,您将得到以下结果 :

输出

3) Shyam   Biology   874) Kedar   English   85

AWK提供了一个内置的长度函数,它返回字符串的长度. $ 0 变量存储整行,并且在没有主体块的情况下,采取默认动作,即打印动作.因此,如果一行超过18个字符,则比较结果为true,并且该行将被打印.