awk
按模式扫描和处理文本,支持字段分割、条件判断和格式化输出
语法
awk [options] 'pattern {action}' file参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
-F |
指定字段分隔符 | |
常用 |
-v |
定义外部变量 | |
常用 |
-f |
从文件读取 awk 脚本 | |
常用 |
NR |
内置变量:当前行号 | |
常用 |
NF |
内置变量:当前行字段数 | |
常用 |
示例
打印每行第一个字段
awk '{print $1}' file.txt以冒号分隔,打印用户名和 UID
awk -F: '{print $1, $3}' /etc/passwd打印 UID 大于 1000 的用户
awk '$3 > 1000 {print $1, $3}' /etc/passwd计算第一列数值总和
awk '{sum += $1} END {print sum}' numbers.txt找出磁盘使用率超过 80% 的分区
df -h | awk 'NR>1 && $5+0 > 80 {print $6, $5}'处理 CSV 文件,打印行号和第二列
awk -F, '{print NR": "$2}' data.csv技巧
- $0 表示整行,$1-$n 表示各字段
- BEGIN 块在处理前执行,END 块在处理后执行
- 支持 printf 格式化输出:awk '{printf "%-10s %d\n", $1, $2}'
- 管道组合:ps aux | awk '$3 > 5 {print $11}' 找出 CPU 占用高的进程