1. awk的模式:
awk的基本语法:awk [options] 'PATTERN { action }' file1 file2, ...
2. 关系表达式:
[root@localhost test11]# cat fileliming 80wangmei 70zhangsan 90lisi 81[root@localhost test11]# awk '$2 > 80 {print}' filezhangsan 90lisi 81
3. 正则表达式 :
[root@localhost test11]# awk '/^l|z/{print}' fileliming 80zhangsan 90lisi 81
4. 混合模式:
[root@localhost test11]# awk '/^l/ && $2>80 {print}' filelisi 81
pattern1, pattern2
[root@localhost test11]# awk '/^liming/,$2==90 {print}' fileliming 80wangmei 70zhangsan 90
注意:
区间匹配是最短匹配,既当pattern1成立时会最短匹配pattern2成立的区间。
若pattern1成立而pattern2不成立,则会匹配pattern1成立的记录以及一下的所有记录。
6. BEGIN模式:
[root@localhost test11]# cat 1.awk#!/bin/awk -fBEGIN {print "hello,world"}[root@localhost test11]# ./1.awkhello,world
7. END模式 :
[root@localhost test11]# cat 2.awk#! /bin/awk -fBEGIN {print "scores report"print "================================="}{ print }END {print "================================"print "printing is over"}[root@localhost test11]# ./2.awk filescores report=================================liming 80wangmei 70zhangsan 90lisi 81================================printing is over
8. awk控制语句 :
1>. if语句的功能是根据用户指定的条件来决定执行程序的哪个分支,其语法如下:
if (expression){statement1statement2}else{statement3statement4}
2>. while语句是另外一种常用的循环结构,其语法如下:
while (expression){statement1statement2...}
do {statement1statement2...}while (expression)
同样,当表达式expression的值为真时执行循环体中的语句。
for(expression1; expression2; expression3){statement1statement2...}for循环还可以用来遍历数组元素:语法: for(变量 in 数组) {语句}
在上面的语法中,表达式expression1通常用来初始化循环变量,表达式expression2通常用来指定循环执行的条件,表达式expression3通常用来改变循环变量的值。当表达式expression2的值为真时,执行循环体中的语句。
5>. break语句:用户可以通过使用break语句在适当的时机退出for以及while等循环结构,而不必等到循环结构自己退出。
[root@localhost ~]# netstat -ant | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'ESTABLISHED 1LISTEN 10每出现一次被/^tcp/模式匹配到的行,数组S[$NF]就加1,NF为当前匹配到的行的最后一个字段,此处用其值做为数组S的元素索引。
delete array[index]
10. awk内置函数:
[root@localhost ~]# date +%T | awk '{split($0,a,":");print a[1],a[2],a[3]}'19 32 19
2>. length([string]):
[root@localhost ~]#awk 'BEGIN{print length("uplooking")}'9
3>. substr(string, start [, length]):
功能:取string字符串中的子串,从start开始,取length个;start从1开始计数;
示例:
[root@localhost ~]#awk 'BEGIN{print substr("uplooking",u,2)}'up
4>. system(command) :
功能:执行系统command并将结果和执行命令后的状态码返回至awk命令;
示例:
[root@localhost ~]# awk 'BEGIN{print system("whoami")}'root
0
5>. systime():
[root@localhost ~]# awk 'BEGIN{print systime()}'
1658489640
6>. tolower(string) :
功能:将s中的所有字母转为小写;
示例:
[root@localhost ~]# awk 'BEGIN{print tolower("WWW.baidu.COM")}'www.baidu.com
7>. toupper(s):
[root@localhost ~]# awk 'BEGIN{print toupper("WWW.baidu.COM")}'WWW.BAIDU.COM
本文详细介绍了awk命令的模式匹配,包括关系表达式、正则表达式、混合模式、BEGIN和END模式的使用。同时,讲解了awk中的控制语句,如if、while、for循环,以及break、continue、next和exit语句。此外,还讨论了awk如何处理数组和内置函数,如split、length、substr等,以及如何在awk程序中使用系统命令。通过对这些内容的学习,读者能够更深入地掌握awk在文本处理中的应用。
701

被折叠的 条评论
为什么被折叠?



