分享一下awk命令使用实例

awk命令和sed命令一样,也是逐行扫描文件的,从第一行到最后一行,寻找匹配特定模板的行,并在这些行上运行“选择”动作。如果一个模板没有指定动作,这些匹配的行就被显示在屏幕上。如果一个动作没有模板,所有被动作指定的行都被处理。

创新互联建站-专业网站定制、快速模板网站建设、高性价比阜阳网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式阜阳网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖阜阳地区。费用合理售后完善,10多年实体公司更值得信赖。

Awk模式

Awk支持不同类型的模式,包括正则表达式、关系表达式、范围和特殊表达式模式。

在下面的例子中,将创建一个名为“ teams.txt”的文件,文件内容如下:

[root@localhost ~]# cat teams.txt

Bucks Milwaukee    60 22 0.732
Raptors Toronto    58 24 0.707
76ers Philadelphia 51 31 0.622
Celtics Boston     49 33 0.598
Pacers Indiana     48 34 0.585

正则表达式模式

Awk的正则表达式模式用斜线(//)包含起来,例如:要显示包含“0.5”的每条记录,可以运行以下命令:

[root@localhost ~]# awk '/0.5/ {print $0}' teams.txt
Celtics Boston     49 33 0.598
Pacers Indiana     48 34 0.585

要显示包含“0.5”的每条记录的第一个和第二个字段:

[root@localhost ~]# awk '/0.5/ {print $1,$2}' teams.txt
Celtics Boston
Pacers Indiana

显示一个或者多个数字开头的记录,并打印第一列:

[root@localhost ~]# awk '/^[0-9]/ {print $1}' teams.txt
76ers

关系表达式模式

关系表达式模式通常用于匹配特定字段或变量的内容。 常用的关系运算符有:

~:包含
!~:不包含
>:大于
:小于
>=:大于等于
:小于等于
=:等于
!=:不等于

使用~“包含”比较运算符。例如,显示第二个字段中包含“ia”字符的每条记录:

[root@localhost ~]# awk '$2 ~ /ia/ {print $0}' teams.txt
76ers Philadelphia 51 31 0.622
Pacers Indiana     48 34 0.585

若要匹配不包含给定字符的记录,可以使用!~不包含操作符。例如,显示第二个字段中不包含“ia”字符的每条记录:

[root@localhost ~]# awk '$2 !~ /ia/ {print $0}' teams.txt
Bucks Milwaukee    60 22 0.732
Raptors Toronto    58 24 0.707
Celtics Boston     49 33 0.598

使用!=“不等于”操作符,

awk命令使用实例awk命令使用实例

使用>=“大于等于”操作符,显示第四个字段大于等于30的记录:

[root@localhost ~]# awk '$4 >= 30 {print $0}' teams.txt
76ers Philadelphia 51 31 0.622
Celtics Boston     49 33 0.598
Pacers Indiana     48 34 0.585

范围模式

范围模式由逗号分隔的两组字符组成,从与第一个字符串匹配的记录开始,直到与第二个字符串的记录匹配为止的所有记录。

例如,显示从“Raptors”到 “Celtics”在内的记录,:

[root@localhost ~]# awk '/Raptors/,/Celtics/ {print $0}' teams.txt
Raptors Toronto    58 24 0.707
76ers Philadelphia 51 31 0.622
Celtics Boston     49 33 0.598

范围模式也可以使用关系表达式,例如,显示第四个字段等于31到第四个字段等于34 的记录:

[root@localhost ~]# awk '$4 == 31 , $4 == 34 {print $0}' teams.txt
76ers Philadelphia 51 31 0.622
Celtics Boston     49 33 0.598
Pacers Indiana     48 34 0.585

特殊表达式模式

Awk包括以下特殊模式。

BEGIN:在处理记录之前执行此操作。
END:用于在处理记录之后执行此操作。

BEGIN模式通常用于设置变量,END模式用于处理统计的数据。例如,下面将显示“Start Processing.”,然后显示第三个字段,最后显示”End Processing.”:

[root@localhost ~]# awk 'BEGIN {print "Start Processing."};{print $3};END {print "End Processing."}' teams.txt
Start Processing.
60
58
51
49
48
End Processing.

内置变量

Awk有许多内置变量,允许控制程序的处理方式。下面是一些常见的内置变量:

NF:记录中的字段数
NR:当前记录的编号
FILENAME:当前正在处理的输入文件名称
FS:字段分隔符
RS:记录分隔符
OFS:输出字段分隔符
ORS:输出记录分隔符

下面是一个显示如何打印文件名和行数的示例:

[root@localhost ~]# awk 'END {print "File" , FILENAME , "contains" , NR , "lines."}' teams.txt
File teams.txt contains 5 lines.

当前标题:分享一下awk命令使用实例
网页地址:http://www.mswzjz.com/qtweb/news1/165501.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联