awk命令如何使用
今天小编给大家分享一下awk命令如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
Awk模式
Awk支持不同类型的模式,包括正则表达式、关系表达式、范围和特殊表达式模式。
在下面的例子中,将创建一个名为“ teams.txt”的文件,文件内容如下:
[root@localhost ~]# cat teams.txtBucks Milwaukee 60 22 0.732Raptors Toronto 58 24 0.70776ers Philadelphia 51 31 0.622Celtics Boston 49 33 0.598Pacers Indiana 48 34 0.585
正则表达式模式
Awk的正则表达式模式用斜线(//)包含起来,例如:要显示包含“0.5”的每条记录,可以运行以下命令:
[root@localhost ~]# awk '/0.5/ {print $0}' teams.txtCeltics Boston 49 33 0.598Pacers Indiana 48 34 0.585
要显示包含“0.5”的每条记录的第一个和第二个字段:
[root@localhost ~]# awk '/0.5/ {print $1,$2}' teams.txtCeltics BostonPacers Indiana
显示一个或者多个数字开头的记录,并打印第一列:
[root@localhost ~]# awk '/^[0-9]/ {print $1}' teams.txt76ers
关系表达式模式
关系表达式模式通常用于匹配特定字段或变量的内容。 常用的关系运算符有:
~
:包含!~
:不包含>
:大于:小于
>=
:大于等于:小于等于
=
:等于!=
:不等于
使用~
“包含”比较运算符。例如,显示第二个字段中包含“ia”字符的每条记录:
[root@localhost ~]# awk '$2 ~ /ia/ {print $0}' teams.txt76ers Philadelphia 51 31 0.622Pacers Indiana 48 34 0.585
若要匹配不包含给定字符的记录,可以使用!~
不包含操作符。例如,显示第二个字段中不包含“ia”字符的每条记录:
[root@localhost ~]# awk '$2 !~ /ia/ {print $0}' teams.txtBucks Milwaukee 60 22 0.732Raptors Toronto 58 24 0.707Celtics Boston 49 33 0.598
使用!=
“不等于”操作符
使用>=
“大于等于”操作符,显示第四个字段大于等于30的记录:
[root@localhost ~]# awk '$4 >= 30 {print $0}' teams.txt76ers Philadelphia 51 31 0.622Celtics Boston 49 33 0.598Pacers Indiana 48 34 0.585
范围模式
范围模式由逗号分隔的两组字符组成,从与第一个字符串匹配的记录开始,直到与第二个字符串的记录匹配为止的所有记录。
例如,显示从“Raptors”到 “Celtics”在内的记录,:
[root@localhost ~]# awk '/Raptors/,/Celtics/ {print $0}' teams.txtRaptors Toronto 58 24 0.70776ers Philadelphia 51 31 0.622Celtics Boston 49 33 0.598
范围模式也可以使用关系表达式,例如,显示第四个字段等于31到第四个字段等于34 的记录:
[root@localhost ~]# awk '$4 == 31 , $4 == 34 {print $0}' teams.txt76ers Philadelphia 51 31 0.622Celtics Boston 49 33 0.598Pacers 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.txtStart Processing.6058514948End Processing.
内置变量
Awk有许多内置变量,允许控制程序的处理方式。下面是一些常见的内置变量:
NF
:记录中的字段数NR
:当前记录的编号FILENAME
:当前正在处理的输入文件名称FS
:字段分隔符RS
:记录分隔符OFS
:输出字段分隔符ORS
:输出记录分隔符
下面是一个显示如何打印文件名和行数的示例:
[root@localhost ~]# awk 'END {print "File" , FILENAME , "contains" , NR , "lines."}' teams.txtFile teams.txt contains 5 lines.
以上就是“awk命令如何使用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341