AWK 基础示例

AWK 基础示例

本章介绍了几个有用的AWK命令及其相关示例。下面是要处理的文本文件 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 '{print3 "\t" $4}' marks.txt

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

输出

Physics   80
Maths     90
Biology   87
English   85
History   89

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

打印所有行

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

示例

[jerry]awk '/a/ {print0}' marks.txt

执行该代码后,你将得到以下结果:

输出

2) Rahul    Maths     90
3) Shyam    Biology   87
4) Kedar    English   85
5) Hari     History   89

在上面的示例中,我们正在搜索表单模式 一个 .当模式匹配成功时,它会执行来自body块的命令。在没有body块的情况下,采取的默认操作是打印记录。因此,以下命令产生相同的结果−

示例

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

按模式打印列

当模式匹配成功时,默认情况下,AWK会打印整条记录。但是你可以指定AWK只打印特定的字段。例如,以下示例在模式匹配成功时打印第三个和第四个字段。

示例

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

执行该代码后,您会得到以下结果-

输出

Maths    90
Biology  87
English  85
History  89

以任意顺序打印列

可以以任意顺序打印列。例如,下面的示例先打印第四列,然后打印第三列。

示例

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

在执行上面的代码时,你将得到以下结果−

输出

90   Maths
87   Biology
85   English
89   History

计数和打印匹配模式

让我们看一个示例,你可以计数并打印匹配模式成功的行数。

示例

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

执行此代码后,您会得到以下结果−

输出

Count = 4

在这个示例中,当匹配成功时,我们增加计数器的值,并在END块中打印这个值。请注意,与其他编程语言不同,使用变量之前无需声明。

打印长度超过18个字符的行

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

示例

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

在执行这段代码时,你会得到以下结果:

输出

3) Shyam   Biology   87
4) Kedar   English   85

AWK提供了一个内置的 length 函数,该函数返回字符串的长度。 $0 变量存储整个行,在没有定义动作块的情况下,会执行默认动作,即打印动作。因此,如果一行的字符数超过18个,那么比较结果为true,该行将被打印出来。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程