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

AWK命令

awk命令格式

image
awk指令是又模式,动作或者模式和动作的组合

模式:  可以理解为sed的模式匹配,可以由表达式组成如NR==1第一行,也可以由两个正斜杠之间的正则表达式,可以理解为一个触发条件

动作: action是由大括号{}里的一条或多条语句组成,语句之间使用分号隔开,最常用的动作print

小结

  • pattern和action都要用单引号,防止shell作特殊解释(是交给awk去执行的,而不是bash)

  • 不指定模式,awk默认处理输入的文件数据,每一行,每一列

    • 如果指定模式,例如指定的行,awk就处理指定那一行的数据
  • awk的动作,必须写在花括号里

      {print}
    

awk字段 行/列

符号 作用
NR 行记录,行数据,处理第几行
NF 一行分几列
$1 第一个字段的数据、$2、$3以此类推

内置变量

变量符号 作用
FS 字段分隔符默认是空格和制表符(列分隔符)
RS 行分隔符,用于分隔每一行 默认换行符
OFS 输出分隔符用于打印时分隔字段默认空格
ORS 输出记录分隔符用于打印时分隔记录默认换行符
OFMT 数字输出的格式 默认%
1 RS 以符号 分隔行输出
cat ceshi.txt | awk -v RS=' ' '{print $0,NR}'
2 修改ORS/修改awk输出显示
cat ceshi.txt | awk -v ORS="这个是表 \n" '{print $0}'

awk默认情况下 认为文件从头到尾是整行数据,直到碰到换行符 \n 回车换行符 因此本行结束,进入下一行。可以通过修改行输入的分隔符

awk操作

awk模式种类

1 正则表达式: 基本正则 扩展正则
2 比较表达式
3 范围表达式
4 特殊模式 BEGIN END

比较运算

关系运算符 解释 示例
< 小于 x<y
<= 小于等于 x<=y
== 等于 x==y
!= 不等于 x!=y
>= 大于等于 x>=y
> 大于 x>y
~ 匹配正则 x~/正则/
!~ 与表达式不匹配 x!~/正则/

正则表示式语法

正则表达式作用在于在行数据中匹配想要的字符串,然后执行对应的action动作

**语法**
awk '/正则表达式/{print $0}'
awk -F'分隔符 '/正则/{action}'# 行 NR  列 NF 表示
awk -F ':' 'NR==1 {print $0}' /etc/passwd
awk -F ':' 'NR>=10 || NR<=20 {print $0}' /etc/passwd
# 比较操作
#awk -F ':' '$4 >= 1000 {print $0}' /etc/passwd
# $NF 一行最后一列的字符 pritn $0 输出一行的所有列

范围模式

可以用到正则,也可以用到比较运算符,范围模式就是从某一行到某一行,均是符号条件的行

# 范围显示 print 中NR就是输出行号 连续范围 正则或NR 行号之间用 , 
awk -F ':' '/^root/,/^mail/ {print NR,$0}' /etc/passwd
awk -F ':' '/^bin/,NR==5 {print NR,$0}' /etc/passwd

特殊模式BEGIN和END

BEGIN

BEGIN模式作用在awk开始读取文件行数据,之前就先执行,一般用于预定义一些操作,比如数据的表头格式化,BEGIN后面必须跟上action动作

# 语法awk -F '分隔符' 'BEGIN{print "标头名"} /正则表达/ {print action}'
awk -F ':' 'BEGIN{print "用户名","家目录","解释器"}$1~/(root|mail|nobody|t5)/{print $1,$6,$NF}' /etc/passwd

可以计算器

awk 'BEGIN{print 9/3}'

END模式**

END就是awk结束后的操作,END是awk读取完成所有文件后,在执行END模块,一般用来总结,格式化打印一个结果,END仅会在awk所有行数据处理完毕后,执行END动作

# 语法 awk -F '分隔符' 'BEGIN{print "表头"} {print $NF} END{print $NF}'
awk -F ' ' 'BEGIN{print "姓名","性别","年龄"}{print $0} END{print"输出完毕"}' fiel1
awk -F ':' '{print $0}END{print "总行数: ",NR}' /etc/passwd
awk '/^$/{num+=1;print $0} END{print "空行数: ",num}' fiel1 

其他模式

结合判断输出结果

*if判断在{} 中print输出依然还需要{}
awk '{if($8 == "R") {print $2,$NF}}'

输出整数不带单位

df -Ph | awk '{print int($5)}'
http://www.jsqmd.com/news/312851/

相关文章:

  • 广州市英语雅思培训机构推荐,2026权威测评出国雅思辅导机构口碑榜单。
  • 微算法科技(NASDAQ:MLGO)基于后量子阈值算法的区块链隐私保护技术
  • 2026年护理床品牌推荐:全球五大专业厂商权威评测榜单发布
  • 消息队列RabbitMQ、Kafka、ActiveMQ 、Redis、 ZeroMQ、Apache Pulsar对比和如何运用
  • 小程序毕设项目推荐-基于JavaS基于springboot+Android的高校食堂点餐配送系统小程序基于springboot+Android的高校食堂点餐配送系统小程序【附源码+文档,调试定制服务】
  • 【图像加密】基于16 位十六进制密钥生成子密钥算法进行图像加密解密附matlab代码
  • 视频监控平台EasyCVR电梯智能化管理的实践应用方案
  • 国标GB28181平台EasyCVR博物馆智能监控体系构建与实践
  • 【计算机毕业设计案例】基于springboot+Android的高校食堂点餐配送系统小程序基于JavaSpringBoot和Android的校园点餐系统(程序+文档+讲解+定制)
  • 2026年电动床垫品牌推荐:深度评测与权威排名解析
  • 2026年美国EB5投资移民服务口碑排名,广州值得选的公司有哪些
  • 2026年清香型白酒代理服务选择,山西哪些品牌值得考虑
  • 聊聊哈尔滨佳木斯靠谱的公考机构,佰诚公考值得推荐吗?
  • 2026年广州地区口碑好的DSE补课企业,费用如何
  • 探寻AI智能办公鼠标,哪个品牌性价比高
  • 2026年电动床垫品牌推荐:智能睡眠场景深度评测与权威排名解析
  • 无法读取到U盘文件
  • 2026年工控连接器在工业玻璃制造设备排名分享
  • 2026年想入行网络安全?这篇入门指南,帮你避开90%的坑
  • 2026年护理床垫品牌推荐:权威报告交叉验证TOP5终极排名与选型指南
  • 【android】oppo手机拷贝视频文件
  • 互联网大厂Java求职面试实战:微服务、缓存与AI技术全栈问答解析
  • 2026年护理床垫品牌推荐与排名:基于10大核心指标解析
  • 2026年护理床垫品牌推荐与评测:聚焦智能健康管理,解决舒适与安全核心痛点
  • 组合数学浅析
  • 如何为不同健康阶段选护理床?2026年品牌推荐与评价,直击兼容与操作痛点
  • 玻璃转子流量计常见问题解答(2026最新专家版)
  • 2026年家用护理床品牌推荐:权威评测揭示五大品牌综合实力排名
  • 2026年护理床垫品牌推荐:专业评测与权威排名解析
  • Linux中使用find命令搜索文件