echo a a a > afile
sed 's/a/aa/ afile
sed 's!/!abc!' afile
sed -e 's/a/aa/' -e 's/aa/bb/' afile
# 合并多个替换命令
sed 's/a/aa/;s/aa/bb/' afile
# 查找多个文本
sed 's/a/aa/;s/aa/bb/' afile bfile cfile
# 把替换的文件写入到原始文件
sed -i 's/a/aa/;s/aa/bb/' afile
sed全局替换
sed 's/old/new/g' filename
g为全局替换,用于替换所有出现的次数
`head -5 /etc/passwd | sed 's/root/!!!!/g' 把root替换为4个!
/如果和正则匹配的内容冲突可以使用其他符号,如
sed 's@old@new@g' filename
sed标识位
数字,第几次出现进行替换
`head -5 /etc/passwd | sed 's/root/!!!!/2' 把第2个root替换为4个!
g每次出现都替换
p打印模式空间的内容,
head -5 /etc/passwd | sed 's/root/!!!!/p 匹配成功的模式会打印一次
sed -n 'script' filename 阻止默认输出
head -5 /etc/passwd | sed -n 's/root/!!!!/p 只输出替换成功的行
w file 将模式空间的内容写入到文件
head -5 /etc/passwd | sed -n 's/root/!!!!/w /tmp/a.txt
sed寻址
/正则表达式/s/old/new/g
head -5 /etc/passwd | sed '/^bin/s/nologin/!/
行号s/old/new/g
行号可以说具体的行,可以说最后一行$符号
head -5 /etc/passwd | sed '2s/adm/!/
head -5 /etc/passwd | sed '1,3s/adm/!/
head -5 /etc/passwd | sed '1,$s/adm/!/
可以使用两个寻址符号,也可以混合使用行号和正则地址
head -5 /etc/passwd | sed '/^bin/,$s/nologin/!/
sed分组
寻址可以匹配多条命令
/regular/
sed脚本文件
可以将选项保存为文件,使用-f加载脚本文件
sed -f sedscript filename
sed其他指令
删除命令
[寻址]d,寻址可以是行号或正则,也可以是混合
删除模式空间内容,改变脚本的控制流,读取新的输入行,d后的任何指令都不会执行
追加、插入、更改
追加命令a,下一行插入
sed '/ab/a hello' bfile
插入命令i,上一行插入
sed '/ab/i hello' bfile
更改命令c, 把这一行改写成
sed '/ab/c hello' bfile
打印
=打印行号
打印命令p
sed '/ab/p' bfile
下一行
n 下一行指令
读文件和写文件
r读取文件
sed '/ab/r afile' bfile
w写入文件
sed '/ab/w afile' bfile
退出命令
退出命令q
sed 10q filename
sed -n 1,10p filename
time sed -n '1,10p' filename 查看匹配1到10行运行的时间
sed的多行模式
多行模式处理命令N、D、P
N将下一行加入到模式空间
sed 'N;s/hello/!!!/' a.txt
sed 'N;s/\n//;/s/hello bash/hello sed/\n;P;D' b.txt
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术