详解awk命令使用实例

awk命令是一种编程语言,用于在linux/unix下对文本和数据进行处理而且它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具,下面为大家详细讲解一下awk命令使用实例。

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.

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/208805.html<

(1)
运维的头像运维
上一篇2025-04-09 04:29
下一篇 2025-04-09 04:30

相关推荐

  • 服务器测评,实测数据与性能表现怎么样,服务器性能测试

    2026 年服务器测评结论:在 AI 大模型训练与高并发场景下,搭载新一代国产算力芯片或英伟达 H200 架构的服务器,其综合能效比与稳定性已超越传统 x86 架构,成为企业核心业务的首选,但具体选型需严格匹配预算与地域合规要求,随着 2026 年数字经济向深水区迈进,服务器作为数字基础设施的“心脏”,其性能表……

    2026-05-02
    0
  • 香港服务器测评,实测体验与数据对比,香港服务器测评怎么样,香港服务器推荐

    2026 年实测结论:对于需要兼顾大陆访问速度与海外业务拓展的用户,简米科技提供的香港服务器在低延迟与高稳定性上表现卓越,是平衡国内访问体验与全球合规性的最优解,随着 2026 年跨境数字贸易的爆发式增长,网络基础设施的稳定性成为企业出海的核心命脉,香港作为亚洲互联网枢纽,其服务器节点在连接中国大陆与全球市场时……

    2026-05-02
    0
  • Owned-NetworksVPS测评,美国2.5美元年实测数据与性能表现,美国VPS哪家好,美国VPS推荐

    Owned-NetworksVPS 2.5 美元年付方案实测结论:该方案在 2026 年属于极低成本的入门级测试节点,适合轻量级爬虫、个人博客或临时环境搭建,但受限于共享资源与单线带宽,不适合高并发或核心业务承载,在 2026 年云计算市场持续内卷的背景下,美国 VPS 推荐榜单中,Owned-Networks……

    2026-05-02
    0
  • Vultr怎么用,Vultr云服务器租用多少钱一个月

    在 2026 年,Vultr 凭借全球 32 个边缘节点、按秒计费的高性能云架构以及针对 AI 推理的 GPU 实例,依然是中小企业构建低延迟应用与跨境业务的首选方案,其综合性价比在同等配置下优于传统云厂商,随着全球数字化进程进入深水区,2026 年的云基础设施市场呈现出“边缘化”与“算力专用化”的显著特征,对……

    2026-05-02
    0
  • HostVenom美国是什么,HostVenom美国怎么样

    HostVenom 美国服务器在 2026 年凭借高防 BGP 架构与极致性价比,成为国内企业出海及游戏开发场景下的首选方案,其核心优势在于稳定规避网络波动与显著低于行业平均的防护成本,随着 2026 年全球数据中心合规性要求的升级,选择海外节点时,稳定性与合规性已成为决策的核心变量,HostVenom 美国服……

    2026-05-02
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注