Linux文本编辑三剑客之awk

news/2025/10/12 19:47:53/文章来源:https://www.cnblogs.com/chucz/p/19137116

Linux 文本编辑三剑客之 awk

Linux 文本处理三剑客是面试和后端工作中较为常见的。需要掌握:

  • grep:文本过滤、筛选
  • sed:文本编辑加工
  • awk:文本格式化输出

文章只列举常用的,不会完全把手册复述一遍

画板

本节内容基于正则表达式:

正则表达式

借助正则表达式可以快速匹配、过滤需要的字符串,在 Linux 上处理大量文本比较高效。

  • 一次处理一行
  • Linux 上只有文本处理工具三剑客(grep、sed、awk)常用,编程语言都有对应支持
  • 扩展正则是基本正则的补充,一般结合三剑客使用建议直接使用扩展正则的写法,简洁

基本正则

符号 作用
^ 模式匹配最左侧,^abc就是以abc开头
$ 模式匹配最右侧,abc$就是以abc结尾
^$ 组合符。空行
. 任意一个且只有一个字符,不匹配空行
* 匹配前一个字符0或多次,不单独使用
.* 组合符。匹配任意多个字符
^.* 组合符。匹配任意多个字符开头
.*$ 组合符。匹配任意多个字符结尾
\ 特殊字符还原本意,\.是小数点
[abc] 匹配集合内任意字符
[^abc] 匹配集合之外的字符
<> 定位单词的左侧和右侧。<deltaqin> 可以找出 deltaqin nb找不出deltaqinnb

扩展正则

符号 作用
+ 匹配前面字符一次或多次
[:@]+ 组合符。匹配[]内的字符一次或多次
? 匹配前面字符0次或1次
` `
() 分组过滤,括号内是一个整体
a{m,n} 前面的字符最少m最多n次
a{m,} 前面的字符最少m次
a{m} 前面的字符m次
a{,m} 前面的字符最多m次

具体使用还是要结合三剑客一起

Why awk

按行对文本复杂格式化处理,简单使用 grep 或者 sed 就可以,自定义要求高就使用 awk。更像是一门编程语言,支持判断、数组、循环等等。

What awk

awk [option] '[pattern]{action}' file
# awk 'BEGIN{action} pattern{action} END{action}' file
  • option:可选参数
    • -F 指定分隔符,默认空格分割
    • -v 定义或修改一个awk内部变量
  • pattern:可以是普通文本字符,也可以是正则表达式
    • BEGAIN处理文本前要执行的操作
    • END 处理文本之后执行的操作
    • 使用内置变量 + 关系运算符,限制输出内容,例如NR>3NR!=3/正则/!/正则/不匹配正则、/正则/、/正则/范围,条件&&条件
  • action:对文本执行的操作
    • print 自带换行符,
    • printf 是没有换行符的。printf需要指定每一个item的输出格式,格式都是%开头,和C语言基本一致,默认右对齐,-变为左对齐
  • 内置变量:
    • 行列:$0整行;NF分割完最后一列;(NF-1)分割完倒数第二列;NR当前行号;FNR各文件分别计数的行号
    • 分隔符:FS字段输入分隔符,默认空格;OFS字段输出分隔符,默认空格;
    • 换行符:RS输入换行符,替代回车;ORS输出换行符,替代回车
    • 其余变量:FILENAME文件名;ARGC命令行参数个数;ARGV命令行参数构成的数组;

注意:

必须外层单引号,内层双引号。

How awk

使用简单内置变量打印内容

1653215134846-c6cab67b-aeb6-4aa2-a35b-9149477994c5.png

输出内容之间加上,否则没有空格

1653215145822-73ba0640-a6da-42bf-9511-672fa2ff4c1f.png

自定义输出的内容:

1653215283479-f947cc1e-6a2e-4124-bed4-a54de8ccf166.png

多个文件的行号分开打印:FNR

1653217127201-9db8f2fa-c411-4989-a5db-6201b14b8666.png

打印匹配模式的内容

awk '[pattern]{action}' file

打印第5行:

1653215785540-f26f1ab9-f771-480e-9d52-f021ae150d4d.png

打印第5行第一列:

1653215814269-8e70eaa1-1934-4c41-b2cb-af24ee236dd7.png

打印第5-7行第一列:

1653215952435-8bfeab9e-3e42-4306-ae46-7b59790eacee.png

行号 NR

number of row

1653216024056-caa90e9a-bab3-4343-88b9-3466ea97abdb.png

列数NF

number of field

1653216172313-21855f22-f2a6-4af9-94d2-3efe7e874970.png

指定输入/输出分隔符

FS 输入分隔符

OFS 输出分隔符

1653216263658-319bc783-50b5-4270-8d8b-50460e7bbd1c.png

1653216416970-e6d26e36-7c4b-4540-a7b8-6b007f84e818.png

1653216613158-5ca4fc4e-95a2-4d45-ba21-e848a17bdc16.png

参数打印

1653217530377-f6015640-d09c-4bc9-9350-6a4e9d365d8a.png

自定义变量

全局变量

1653217996890-a6efa425-1536-4cfa-9fcf-f2e0da65183e.png

局部变量

1653218096960-494cc79b-6dfa-4d31-8608-07896e3b129f.png

shell变量

1653218189062-a981154b-14f9-444e-b34c-fa6239fd4732.png

printf 格式化输出

1653218513324-50cab870-5467-481d-a581-585042e0467b.png

1653218489773-b0066560-564c-4499-b039-ad60bb9c11f6.png

1653218634395-c327cc91-5de1-41af-874d-24d69f516684.png

模式使用

1653217657252-e50eb1c5-3764-4824-92ed-e83cccb1331a.png

指定了条件模式,只有匹配模式的才会执行action

1653219197681-af019312-d245-4770-a65e-fd98099e4083.png

1653219406351-c06a5554-efb4-4987-9009-fe0ddc88d714.png

正则条件模式使用

1653219729106-f8186980-bd3d-4e95-a6df-70834da9953d.png

1653219689686-60008c42-76e6-4c4e-826c-eb414da03376.png

1653219968325-c37855ff-e75d-443c-97c6-f116c06d69cf.png

范围匹配:

1653220317338-fd423001-527d-4ae4-8aa5-9fc90a8c8e6b.png

常见使用案例

查询系统禁止登录的用户

1653220147103-30883a5e-582f-4529-be11-0b49768cccf4.png

1653220237274-948aeb6a-0828-46b8-8b02-c03a09b9d5fb.png

统计日志访客IP数量

1653220825290-2a345d5d-4008-4054-b82b-d97fd05c466e.png

1653220906710-00c2e953-0ae9-4809-a89a-f9209128b5f0.png

sort -nsort 默认从小到大排序,-n逆序

wc -l 统计行数

访问频繁IP top3

1653221002137-40c67bd5-306e-435c-ae59-9bd053245b0b.png

1653221048368-745bf4fb-ea9c-4489-8d96-18cbc644d8ca.png

打印所有非系统建立用户的用户名和家目录

1653223902996-31883ffc-b448-45e1-8de2-51cbd2fb45ef.png

删除文件空白行写到新文件

1653224233788-4ff52c11-13b9-4509-b8df-ca2eb602f83c.png

显示第三列是211的行

$3~指定针对第三列正则匹配

1653224394154-edac0b2c-2bdb-4f8e-a213-8b7e2697ab29.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考~高效的系统规划与管理师考试—知识篇—V2.0—第四章 IT 服务规划设计 — 2017 年 2018 年 2020 年 2022 年 2023 年

软考~高效的系统规划与管理师考试—知识篇—V2.0—第四章 IT 服务规划设计 — 2017 年 & 2018 年 & 2020 年 & 2022 年 & 2023 年pre { white-space: pre !important; word-wrap: normal !important; …

应用安全 --- 安卓安全 之 文件校验

应用安全 --- 安卓安全 之 文件校验文件校验就是在dex或so中使用代码验证文件的唯一性指纹比如md5,sha1 验证方法 修改文件的不重要的比特位打开验证如果app闪退表示存在校验

详细介绍:GitOps实战:ArgoCD+Tekton打造云原生CI/CD流水线

详细介绍:GitOps实战:ArgoCD+Tekton打造云原生CI/CD流水线pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

从“优化工具”到“价值生态”:多价值主体系统如何重塑AI价值对齐范式

从“优化工具”到“价值生态”:多价值主体系统如何重塑AI价值对齐范式 长期以来,人工智能价值对齐的讨论被禁锢在一个既定框架内:如何让AI的行为精准“符合”人类预设的单一或有限价值目标。从基于规则的硬编码到基…

2.2 深度学习(Deep Learning)

深度学习(Deep Learning) 深度强化学习(Deep RL)使用深度神经网络作为函数逼近器,从而能够学习状态–动作对的复杂表示。本节对深度学习进行简要概述,更多细节可参考 @Goodfellow2016。前馈神经网络(Feedforwar…

第十二篇

今天是10月12日,今天睡了个好觉,中午送了外卖,下午背了单词。

详细介绍:【ROS2学习笔记】节点篇:节点概述

详细介绍:【ROS2学习笔记】节点篇:节点概述2025-10-12 19:35 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

2.1 函数逼近(Function Approximation)

函数逼近(Function Approximation) 此前介绍的所有方法都是表格方法(tabular methods),即为每个状态–动作对存储一个值:要么是该动作的 Q 值,要么是该动作的偏好值。在大多数实际应用中,这样存储的值数量会迅…

VSCode code-snippets Note

VSCode code-snippets Note在使用 VSCode 作为 C++ 开发工具的时候,编写头文件的时候会有大量的冗余代码,使用 Code Snippets 中的 transform 可以大幅提高该过程的效率,于是这里总结一些 VSCode 中一些开发常用的 …

Elasticsearch 备份:snapshot 镜像使用篇

本文是 ES 备份的镜像使用篇,主要介绍了 snapshot 的备份恢复原理和使用细节。上一篇文章中,我们简要的列举了 Elasticsearch 备份 主要的几个方案,比对了一下各个方案的实现原理、优缺点和适用的场景。现在我们来看…

本次科研收获

不要害怕修改项目源代码,现在的AI Agent已经很强大了,可以直接把需求告诉他,让他改

2025.10.12 - 20243867孙堃2405

早上太阳照到窗台上,风轻轻的飘进来,把我没看完的书吹得翻了两页,感觉这会儿时间都变慢了。

git clone 克隆下载深度层级仓库最新源码而不是整个仓库

前言全局说明一、说明 1.1 环境: Windows 7 旗舰版 git version 2.9.0.windows.1二、命令原型 usage: git clone [<options>] [--] <repo> [<dir>]--depth <depth> create a shallow cl…

九、可供选择的体系结构

九、可供选择的体系结构 之前发现大多数时间只有20%的指令会使用,所以不使用复杂的扩展指令集,而是使用RISC,目前大多数体系结构采用RISC内核实现CISC架构RISC设备 RISC是一种设计方法,比CISC指令集规模更小的指令…

Linux查看一个文件的时候发生了什么?

Linux查看一个文件的时候发生了什么?概念辨析 整体的关系是这样的:下面来逐个介绍图中的内容。 文件系统磁盘文件系统:按照指定的格式和规则直接将数据存在磁盘中,Ext 2/3/4等等拿到磁盘首先格式化为具体的磁盘文件…

2025 年 10 月金属门窗厂家加盟代理品牌推荐排行榜,行业权威盘点与品质红榜发布

在金属门窗加盟代理市场,品牌的生产实力与产品竞争力是创业者核心考量。2025 年,消费者对金属门窗的耐用性、安全性、节能性需求提升,兼具先进技术与完善扶持的品牌更具加盟价值。以下十大品牌经权威盘点,凭硬实力…

五、指令集架构深入分析

五、指令集架构深入分析 雇主不是需要汇编语言程序员,而是需要有理解计算机体系结构的人来写出各高效的程序 指令的格式 指令集设计的考虑因素? ISA设计考虑因素:指令占用内存空间大小; 指令系统复杂程度,主要指指…

ARC 208 Div.2

三天之期已到,这一次,我要夺回属于我的一切!

八、系统软件

八、系统软件 编译时绑定Compile time binding :给定明确的代码 装载时绑定Load time binding:装载到内存里面不可以再修改 运行时绑定Run time binding:模块不运行就不会加载 链接:不同的二进制文件形成一个单一的…

七、输入输出和存储系统

七、输入输出和存储系统 AMDAHL定律(阿姆达尔) 计算机系统整体性能的速度提升(加速比)取决于某个特定部件本身的加速率和该部件在系统中的使用率。公式表示为式中,S为系统整体性能的加速率,f表示待替换部件完成的…