awk与sed简单使用

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 常用命令

基本语法

1
sed 'command' file

常用命令

命令说明
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

快速对比

场景awksed
处理列/字段✅ 强大❌ 较弱
行范围操作✅ 支持✅ 支持
文本替换❌ 较弱✅ 强大
数学计算✅ 内置❌ 不支持
数组/关联数组✅ 支持❌ 不支持
流式编辑❌ 不支持✅ 设计目标

选择建议:处理结构化数据(CSV、日志列)用 awk;纯文本替换、删除、插入用 sed。

Licensed under CC BY-NC-SA 4.0
使用 Hugo 构建
主题 StackJimmy 设计