我就是奇迹

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

读取下一行替换当前行

posted on 2025-05-09 15:15  我就是奇迹  阅读(228)  评论(0)    收藏  举报