当前位置: 首页 > news >正文

Linux文本编辑三剑客之awk

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.hskmm.com/?act=detail&tid=29530

相关文章:

  • 软考~高效的系统规划与管理师考试—知识篇—V2.0—第四章 IT 服务规划设计 — 2017 年 2018 年 2020 年 2022 年 2023 年
  • 10.12
  • 从“优化工具”到“价值生态”:多价值主体系统如何重塑AI价值对齐范式
  • 2.2 深度学习(Deep Learning)
  • 结对项目
  • 第十二篇
  • 2.1 函数逼近(Function Approximation)
  • Elasticsearch 备份:snapshot 镜像使用篇
  • 本次科研收获
  • 2025.10.12 - 20243867孙堃2405
  • git clone 克隆下载深度层级仓库最新源码而不是整个仓库
  • 九、可供选择的体系结构
  • Linux查看一个文件的时候发生了什么?
  • 内存管理
  • 2025 年 10 月金属门窗厂家加盟代理品牌推荐排行榜,行业权威盘点与品质红榜发布
  • 五、指令集架构深入分析
  • ARC 208 Div.2
  • 八、系统软件
  • 七、输入输出和存储系统
  • 那快把题端上来吧(五)
  • 机器学习学术研讨会柏林举办
  • 构建易受攻击的AWS DevOps环境:CloudGoat攻防实战
  • 虚拟机和windows
  • MySQL 5.7版本,搭建一个两主一从的多源主从复制环境
  • 测试哦 - sto-OI
  • SimAM注意力机制
  • python容器-字符串
  • 氛围编程陷阱:为什么AI生成代码正在制造大量伪开发者
  • 记一次的AI Agent开发的思维误区
  • 3_Linux 文件管理三部曲:操作、结构与权限控制