Linux常用命令-awk
Linux常用命令-awk
awk linux强大的文本处理工具
基本语法
awk 是一个行处理器,它逐行读取输入,并按照指定的规则对每一行进行处理。
awk 'pattern { action }' filename
- pattern: 匹配条件。如果没有指定,默认对每一行都执行 action。
- action: 对匹配到的行执行的操作。如果没有指定,默认是打印匹配的行。
# 打印整个文件,等同于 cat 命令
awk '{ print }' filename
# 打印文件的第1列和第3列, $0 表示整行
awk '{ print $1, $3 }' filename
# NR 代表当前行号
# NF 当前行的字段数
# 指定分隔符, 默认情况下 awk 使用空格或制表符作为字段分隔符
awk -F',' '{ print $1, $3 }' filename.csv
# 打印第3列大于 100 的行
awk '$3 > 100' filename
# 打印包含 "error" 的行
awk '/error/' filename
# 当第3列大于100时,打印第1和第3个列字段的值
awk -F ',' '$3 > 100 { print $1, $3 }' filename.csv
# 计算第3列的总和
awk '{ sum += $3 } END { print sum }' filename
# 计算第三列的平均值
awk '{ sum += $3; count++ } END { print sum/count }' filename
# 打印长度超过 80 字符的行
awk 'length($0) > 80' filename
常用命令
# $NF 打印匹配行最后一位
cat filename | awk -F'|' '{print $NF}'
# 统计IP地址出现的次数
awk '{print $1}' access.log | awk '{print $1}' |sort | uniq -c | sort -n
# '~' 正则表达式匹配,第4个字段匹配到"info"
awk -F"|" '{if($4~/info/)print $5}' filename
# 按行号NR匹配(匹配1-3行)
awk 'NR>=1&&NR<=3' filename
awk 'NR==1,NR==3' filename
# 按字符位置匹配
awk '/warn/,/error/' filename
# 打印第2位为"info"的所有行
cat filename | awk -F'|' '{if($2=="info") print $0}'
# 打印第五位小于10的行
cat filename| awk -F'|' 'BEGIN{max=10;}{if($5+0<max+0)print $0}'
# 分类求和,统计 $4 值相同时对应 $5 值的总和
cat filename | awk -F'|' '{sum[$4]+=$5}END{for(i in sum)printf("%-10s %d\n",i,sum[i])}'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix