在 Linux 日常运维和数据处理工作中,awk 是一把“瑞士军刀”。它几乎无所不能,却常常被低估。大多数人只会用它做简单的分隔符处理,实际上 awk 还有很多隐藏的妙用。今天就分享 8 个冷门但极其实用的技巧,用过的人都说好。
1. 按列求和,一行搞定
想快速统计一列数字的和?
`awk ‘{sum+=$1} END {print sum}’ file.txt`
只需一条命令,就能把第一列所有数字相加。适合快速统计访问量、磁盘使用量等。
2. 打印指定列,比 cut 更灵活
`awk ‘{print $2, $5}’ file.txt`
可以一次输出第二列和第五列,比 cut 更直观。如果加上格式化控制,还能实现对齐输出,非常适合分析日志时只关注部分字段。
3. 条件筛选,比 grep 更强大
`awk ‘$3 > 100 {print $1, $3}’ file.txt`
这条命令表示:只打印第三列大于 100 的行。相比 grep 只能按字符串匹配,awk 可以直接做数值比较。
4. 按条件计数,秒变统计工具
`awk ‘$2==”ERROR” {count++} END {print count}’ logfile`
这行命令能统计日志中第二列为 ERROR 的行数。相比 wc -l 的全量统计,这种方式更精准,能快速定位错误数量。
5. 格式化输出,替代 printf
`awk ‘{printf “%-10s %-5s\n”, $1, $2}’ file.txt`
可以指定列宽和对齐方式,把输出格式化成表格。处理 CSV 文件或对齐输出结果时非常好用。
6. 内置函数 substr 截取字符串
`awk ‘{print substr($1,1,5)}’ file.txt`
直接截取第一列前五个字符。比如处理时间戳时,可以一键提取日期部分,而不需要额外写脚本。
7. 内置函数 length 统计字段长度
`awk ‘{print $1, length($1)}’ file.txt`
输出第一列以及它的长度。在排查异常数据时(比如某列字符过长),用这个命令能立刻发现问题。
8. 多分隔符处理,灵活拆分复杂文本
`awk -F ‘[,;:]’ ‘{print $1, $2}’ file.txt`
通过正则设置多个分隔符,同时支持逗号、分号、冒号。遇到格式不统一的数据文件时,这个技巧特别省心。
结语
awk 并不是一门“老掉牙”的工具,它的灵活和强大,足以胜任日常大多数文本处理任务。从快速统计到复杂筛选,从字符串处理到表格格式化,这 8 个冷门技巧能大幅提升效率。下次再遇到数据处理问题,不妨先试试 awk,说不定能让你少写几十行脚本。
📖 相关阅读
👉 了解赛凡智云企业私有云存储 | 申请免费试用
📖 相关阅读
🏢 赛凡智云 — 企业私有云存储专家
安全可控 · 高效协同 · 一键部署 · AI就绪
数据安全可控
私有化部署,数据不出企业
AES-256加密 + 等保三级
精细权限管控
部门/角色/文件夹多级权限
操作审计全程追溯
全终端覆盖
PC/手机/平板/Web
随时随地安全访问
极速传输
大文件秒传,断点续传
局域网传输速度拉满
在线协同编辑
Office/WPS在线编辑
多人协作实时同步
AI数据底座
统一数据汇聚与管理
为企业AI应用夯实基础
