macOS(bash/zsh)sed 命令全解析
你已经进入 sed 的高手之路了!下面是一份专为 macOS(bash/zsh) 用户准备的 sed 命令全解析,涵盖了:
✅ sed 是什么
✅ 替换 IP 示例
✅ 常用命令说明(=, s, d, a, i, q, p, N, D, P, n)
✅ 每个命令的用途 + 示例
✅ sed 是什么?
sed 是 流编辑器(Stream EDitor),用来对文本进行查找、替换、插入、删除等处理。它按行读文件,每次处理一行。
✅ 替换单个文件中的 IP(macOS)
sed -i '' 's/192\.168\.1\.54/192.168.199.145/g' config.yaml
|
命令部分 |
含义 |
|---|---|
|
-i '' |
macOS 中表示原地修改(不创建备份) |
|
's/.../.../g' |
替换操作,g 表示全局替换 |
|
192\.168\.1\.54 |
被替换的旧 IP(注意 . 要转义) |
|
192.168.199.145 |
替换成的新 IP |
✅ sed 常用命令详解 + 示例
|
命令 |
含义 |
示例 |
解释 |
|---|---|---|---|
|
= |
打印当前行号 |
sed '=' file.txt |
每行前输出行号 |
|
s |
替换文本 |
sed 's/apple/orange/' |
替换首个匹配 |
|
d |
删除匹配行 |
sed '/debug/d' |
删除含有 debug 的行 |
|
a |
在当前行后添加内容 |
sed '/match/a\new line' |
匹配后插入 |
|
i |
在当前行前插入内容 |
sed '/match/i\new line' |
匹配前插入 |
|
p |
打印当前行(与 -n 配合) |
sed -n '/error/p' |
只打印包含 error 的行 |
|
q |
处理到此行为止,退出 |
sed '5q' |
处理前 5 行后退出 |
✅ 多行处理命令
N
:追加下一行到当前行
sed 'N;s/\n/ /' file.txt
把每两行合并成一行,并将换行变空格。
D
:删除当前模式空间中第一行并立即开始下一轮
sed 'N;/foo.*\nbar/D' file.txt
删除匹配 foo+换行+bar 结构的行组合。
P
:打印模式空间中的第一行
sed 'N;P;D' file.txt
用于每两行输出一次第一个。
n
:读取下一行替换当前行(与
N
不同)
sed 'n' file.txt
跳过当前行,打印下一行。
✅ sed 组合操作示例
✅ 每行前加行号(经典命令)
sed = file.txt | sed 'N;s/\n/ /'
效果:
1 apple
2 banana
3 cherry
✅ 删除空白行
sed '/^$/d' file.txt
✅ 替换某行后的内容
sed '/pattern/a\This is added.' file.txt
✅ 插入文本到文件顶部
sed '1i\Header line' file.txt
✅ 替换指定行
sed '3s/old/new/' file.txt
替换第 3 行中的内容
✅ 总结:命令速查表
|
命令 |
功能 |
|---|---|
|
s |
替换(substitute) |
|
= |
输出行号 |
|
d |
删除 |
|
a |
添加行(after) |
|
i |
插入行(insert before) |
|
p |
打印 |
|
q |
退出 |
|
N |
追加下一行到当前行 |
|
D |
删除第一行并立即处理下一轮 |
|
P |
打印第一行(多行模式空间下) |
|
n |
读取下一行替换当前行 |
浙公网安备 33010602011771号