美文网首页
awk命令使用实例

awk命令使用实例

作者: 老率的IT私房菜 | 来源:发表于2020-10-12 21:21 被阅读0次

Awk是为高级文本处理而设计的通用脚本语言。它主要用作报告和分析工具。本文介绍awk在命令行中操作文本的使用方式。

Awk一次对一条记录进行操作,直到到达输入的末尾。记录由一个称为记录分隔符的字符分隔。默认的记录分隔符是换行符,这意味着文本数据中的每一行都是一个记录。

每条记录中的字段由$后跟字段号(以1开头)引用。第一个字段用$1表示,第二个字段用$2表示,依此类推。最后一个字段也可以用特殊变量$NF引用。整个记录可以用$0引用。

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

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

使用>=“大于等于”操作符,显示第四个字段大于等于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是最强大的文本处理工具之一。

本文原创地址:https://www.linuxprobe.com/awk-cmd-example.html编辑:逄增宝,审核员:逄增宝

相关文章

  • awk命令使用实例

    Awk是为高级文本处理而设计的通用脚本[https://www.linuxcool.com/]语言。它主要用作报告...

  • Linux awk命令详解

    Linux awk命令详解 使用方法 调用awk 入门实例 1. 显示最近登录的5个帐号 awk工作流程是这样的:...

  • find、grep、awk、sed实例

    find命令 参数: 例子: grep 命令 例子 awk实例:

  • awk命令的使用

    awk命令的使用 awk命令格式awk '条件1{动作1} 条件2{动作2}…' 文件名 在介绍awk命令的用法前...

  • awk gsub使用

    参考文章 awk当中使用外部变量 gsub当中使用外部变量 1.awk命令使用双引号的情况下 此时在awk命令里面...

  • Linux命令之awk

    awk中使用shell命令awk '{cmd="rm "$0;system(cmd)}' filename.txt...

  • Linux批量kill进程 (批量杀掉进程)

    使用awk批量杀进程的命令 说明: 使用cut批量杀进程的命令: 说明:

  • awk 命令

    awk 命令 awk 是用来管理数据和生成报告的脚本语言,awk命令行编程不需要编译,允许用户使用变量,数学方法,...

  • awk命令使用

    用法一: awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' ...

  • linux个人常用的一些小命令

    find sed流编辑器 grep命令 awk 语法形式 awk脚本基本结构 screen使用 1.直接在命令行键...

网友评论

      本文标题:awk命令使用实例

      本文链接:https://www.haomeiwen.com/subject/uzwppktx.html