Basic 例子
优质
小牛编辑
129浏览
2023-12-01
本章介绍了几个有用的AWK命令及其相应的示例。 考虑使用以下内容处理的文本文件marks.txt -
1) Amit Physics 80
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
打印列或字段
您可以指示AWK仅输入输入字段中的某些列。 以下示例演示了这一点 -
例子 (Example)
[jerry]$ awk '{print $3 "\t" $4}' marks.txt
执行此代码时,您将获得以下结果 -
输出 (Output)
Physics 80
Maths 90
Biology 87
English 85
History 89
在文件marks.txt ,第三列包含主题名称,第四列包含在特定主题中获得的标记。 让我们使用AWK打印命令打印这两列。 在上面的例子中, $3 and $4代表输入记录中的第三个和第四个字段。
打印所有行
默认情况下,AWK打印所有匹配模式的行。
例子 (Example)
[jerry]$ awk '/a/ {print $0}' marks.txt
执行此代码时,您将获得以下结果 -
输出 (Output)
2) Rahul Maths 90
3) Shyam Biology 87
4) Kedar English 85
5) Hari History 89
在上面的例子中,我们正在搜索表单模式a 。 当模式匹配成功时,它从主体块执行命令。 在没有体块的情况下 - 采取默认操作来打印记录。 因此,以下命令产生相同的结果 -
例子 (Example)
[jerry]$ awk '/a/' marks.txt
按模式打印列
当模式匹配成功时,AWK默认打印整个记录。 但是你可以指示AWK只打印某些字段。 例如,以下示例在模式匹配成功时打印第三个和第四个字段。
例子 (Example)
[jerry]$ awk '/a/ {print $3 "\t" $4}' marks.txt
执行此代码时,您将获得以下结果 -
输出 (Output)
Maths 90
Biology 87
English 85
History 89
按任意顺序打印列
您可以按任何顺序打印列。 例如,以下示例打印第四列,后跟第三列。
例子 (Example)
[jerry]$ awk '/a/ {print $4 "\t" $3}' marks.txt
执行上面的代码时,您会得到以下结果 -
输出 (Output)
90 Maths
87 Biology
85 English
89 History
计数和打印匹配模式
让我们看一个示例,您可以在其中计算并打印模式匹配成功的行数。
例子 (Example)
[jerry]$ awk '/a/{++cnt} END {print "Count = ", cnt}' marks.txt
执行此代码时,您将获得以下结果 -
输出 (Output)
Count = 4
在此示例中,我们在模式匹配成功时递增计数器的值,并在END块中打印此值。 请注意,与其他编程语言不同,在使用变量之前无需声明变量。
打印超过18个字符的行
让我们只打印那些包含超过18个字符的行。
例子 (Example)
[jerry]$ awk 'length($0) > 18' marks.txt
执行此代码时,您将获得以下结果 -
输出 (Output)
3) Shyam Biology 87
4) Kedar English 85
AWK提供了一个内置的length函数,它返回字符串的长度。 $0变量存储整行,并且在没有主体块的情况下,采取默认操作,即打印操作。 因此,如果一行超过18个字符,则比较结果为true,并打印该行。