awk 常用命令
基本语法
1
| awk 'pattern {action}' file
|
常用内置变量
| 变量 | 说明 |
|---|
$0 | 整行内容 |
$1, $2... | 第 1、2…列 |
NF | 字段数量 |
NR | 行号 |
FS | 输入字段分隔符 |
OFS | 输出字段分隔符 |
常见用法示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| # 打印指定列
awk '{print $1, $3}' file
# 指定分隔符
awk -F: '{print $1}' /etc/passwd
# 条件过滤(第3列大于100)
awk '$3 > 100 {print $0}' file
# 行号范围
awk 'NR>=10 && NR<=20' file
# 模式匹配
awk '/error/ {print NR, $0}' log
# 统计求和
awk '{sum+=$2} END {print sum}' file
# 格式化输出
awk '{printf "%-10s %5d\n", $1, $2}' file
|
sed 常用命令
基本语法
常用命令
| 命令 | 说明 |
|---|
s/old/new/ | 替换 |
d | 删除行 |
p | 打印行 |
i | 插入行 |
a | 追加行 |
c | 替换整行 |
n | 读下一行 |
q | 退出 |
常见用法示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| # 替换(只替换每行第一个匹配)
sed 's/old/new/' file
# 全局替换
sed 's/old/new/g' file
# 删除第3行
sed '3d' file
# 删除第2-5行
sed '2,5d' file
# 删除空行
sed '/^$/d' file
# 打印匹配行(类似grep)
sed -n '/pattern/p' file
# 在第3行后插入
sed '3a\new line' file
# 范围替换(第2-4行)
sed '2,4 s/old/new/g' file
# 直接修改文件(谨慎使用)
sed -i 's/old/new/g' file
|
快速对比
| 场景 | awk | sed |
|---|
| 处理列/字段 | ✅ 强大 | ❌ 较弱 |
| 行范围操作 | ✅ 支持 | ✅ 支持 |
| 文本替换 | ❌ 较弱 | ✅ 强大 |
| 数学计算 | ✅ 内置 | ❌ 不支持 |
| 数组/关联数组 | ✅ 支持 | ❌ 不支持 |
| 流式编辑 | ❌ 不支持 | ✅ 设计目标 |
选择建议:处理结构化数据(CSV、日志列)用 awk;纯文本替换、删除、插入用 sed。