awk '{print $1}' file默认按空白字符分列。
约 781 字大约 3 分钟
2026-05-14
awk 是面向列和记录的文本处理工具。它特别适合处理空格分隔、制表符分隔或日志类文本,可以轻松完成取列、过滤、统计和格式化输出。
`awk` 是面向列和记录的文本处理工具。它特别适合处理空格分隔、制表符分隔或日志类文本,可以轻松完成取列、过滤、统计和格式化输出。
awk '{print $1}' file默认按空白字符分列。
awk -F: '{print $1}' /etc/passwd按冒号切分字段。
awk '$3 > 100 {print $1, $3}' file只输出第三列大于 100 的行。
awk '{sum += $1} END {print sum}' file统计第一列总和。
awk 按“记录”和“字段”处理文本:
$1 表示第一列,$2 表示第二列,$0 表示整行awk '{print $1}' file.txt
awk '{print $1, $3}' file.txt
awk '{print NR, $0}' file.txt # 加行号awk -F: '{print $1}' /etc/passwd
awk -F, '{print $1, $2}' data.csv-F 用来指定输入字段分隔符。
awk '$3 > 100 {print $1, $3}' data.txt
awk '/ERROR/ {print $0}' app.log
awk '$1 == "root" {print $0}' /etc/passwdawk '{sum += $1} END {print sum}' numbers.txt
awk '{count += 1} END {print count}' file.txt
awk '{sum += $1; count += 1} END {print sum / count}' numbers.txtEND 块会在所有行处理完之后执行,常用于输出统计结果。
ps aux | awk '$3 > 50 {print $2, $3, $11}'
df -h | awk 'NR > 1 {print $1, $5, $6}'awk 很适合接在管道后面,对命令输出进行二次筛选和格式化。
awk 适合处理“每一行都有类似结构”的文本,例如日志、CSV、命令输出。它不像 grep 只负责找行,也不像 sed 主要做替换;awk 更像一个小型表格处理器。
| 任务 | 更适合的工具 | 例子 |
|---|---|---|
| 找包含某个词的行 | grep | 找出所有 ERROR 日志 |
| 替换固定文本 | sed | 把配置里的 old 改成 new |
| 按列提取、过滤、求和 | awk | 统计访问日志里的状态码 |
-F 指定分隔符。$0 表示整行,$1 才是第一列。{} 前面,动作写在 {} 里面。awk 时,不要直接拼字符串,优先用 -v name="$value"。threshold=100
awk -v n="$threshold" '$3 > n {print $1, $3}' access.log版权归属:Shuo Liu