Linux awk脚本入门教程_Linux强大的文本分析工具实例
发布时间 - 2025-12-12 00:00:00 点击率:次awk是Linux下以字段为单位处理文本的利器,语法为awk 'pattern {action}' file,支持内置变量、BEGIN/END块、条件判断和字符串操作,常用于日志分析、系统信息提取与统计。
awk 是 Linux 下处理文本的利器,特别适合按行、按列提取、统计、过滤和格式化数据。它不像 sed 那样专注编辑,也不像 grep 只做匹配,而是以“字段为单位”做逻辑处理,写法简洁,上手快,一条命令常顶一个 Python 小脚本。
awk 的基本结构和运行方式
awk 的核心语法是:awk 'pattern {action}' file。其中 pattern 是匹配条件(可省略,默认每行都处理),action 是执行动作(如打印、计算、判断)。最常用的内置变量有:
- $0:整行内容
- $1, $2, …:第1、第2个字段(默认空格或制表符分隔)
- NF:当前行字段总数
- NR:当前处理的行号(从1开始)
- FS:输入字段分隔符(默认空白);OFS:输出分隔符(默认空格)
常用实例:从日志和系统命令中快速提取信息
比如查看 df -h 输出中使用率超过 80% 的分区:
df -h | awk '$5+0 > 80 {print $1, $5}'
说明:$5 是“已用百分比”,加 0 是强制转成数字(避免带 % 符号时字符串比较出错);{print $1, $5} 输出设备名和百分比。
再比如统计 nginx 日志中访问次数最多的前 3 个 IP:
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -3
或者直接用 awk 统计(更高效):
awk '{ip[$1]++} END {for (i in ip) print ip[i], i}' access.log | sort -nr | head -3
用 BEGIN 和 END 做初始化与
汇总
awk 在读取文件前执行 BEGIN 块,在读完所有行后执行 END 块,非常适合做统计汇总。
例如计算 /etc/passwd 中 shell 字段(第7列)的种类和数量:
awk -F: 'BEGIN {print "Shell\tCount"} {sh[$7]++} END {for (s in sh) print s, sh[s]}' /etc/passwd | sort -k2nr
这里 -F: 指定冒号为分隔符;BEGIN 打印表头;END 遍历数组并输出结果。
简单条件判断和字符串操作
awk 支持 if、else、正则匹配(~ 和 !~)、substr、length、gsub 等函数。
例如:只打印 /etc/fstab 中非注释、非空行,且第3列是 ext4 的设备:
awk '$1 !~ /^#/ && NF > 0 && $3 == "ext4" {print $1, $2}' /etc/fstab
又如把某列小写转大写:
awk '{print toupper($2)}' data.txt
替换字段中的某个单词(类似 sed):
awk '{gsub(/old/, "new", $3); print}' file.txt
基本上就这些。awk 不需要编译,即写即跑,配合管道几乎能覆盖 80% 的日常文本分析需求。写多了你会发现,它不是“替代脚本语言”,而是“让脚本语言变得不必要的那个工具”。
# linux
# python
# nginx
# access
# 工具
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
装修招标网站设计制作流程,装修招标流程?
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法
MySQL查询结果复制到新表的方法(更新、插入)
Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程
Laravel如何实现本地化和多语言支持?(i18n教程)
微信小程序 wx.uploadFile无法上传解决办法
Laravel如何处理和验证JSON类型的数据库字段
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】
打造顶配客厅影院,这份100寸电视推荐名单请查收
php json中文编码为null的解决办法
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
如何快速上传自定义模板至建站之星?
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
手机软键盘弹出时影响布局的解决方法
三星、SK海力士获美批准:可向中国出口芯片制造设备
高端云建站费用究竟需要多少预算?
Python文本处理实践_日志清洗解析【指导】
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
如何快速搭建二级域名独立网站?
Laravel如何配置和使用缓存?(Redis代码示例)
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】
Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南
Laravel如何实现事件和监听器?(Event & Listener实战)
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
图册素材网站设计制作软件,图册的导出方式有几种?
大连 网站制作,大连天途有线官网?
如何在香港服务器上快速搭建免备案网站?
教你用AI润色文章,让你的文字表达更专业
,在苏州找工作,上哪个网站比较好?
Android 常见的图片加载框架详细介绍
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
网站图片在线制作软件,怎么在图片上做链接?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
iOS验证手机号的正则表达式
在线制作视频网站免费,都有哪些好的动漫网站?
详解MySQL数据库的安装与密码配置
JS弹性运动实现方法分析


汇总