常用选项:
-n 使用安静模式,在一般情况所有的 STDIN 都会输出到屏幕上,加入-n 后只打印被 sed 特殊处理的行
-e 多重编辑,且命令顺序会影响结果
-f 指定一个 sed 脚本文件到命令行执行,
-r Sed 使用扩展正则
-i 直接修改文档读取的内容,不在屏幕上输出
Sed 操作命令:
【sed 操作命令告诉 sed 如何处理由地址指定的各输入行。如果没有指定地址,sed 就会处理输入的所有的行】
p:打印匹配行
=:打印文件行号。
a:在定位行号之后追加文本信息
i:在定位行号之前插入文本信息。
d:删除定位行
c:用新文本替换定位文本
s:使用替换模式替换相应模式
r:从另一个文件中读文件
w:将文本写入到一个文件
y:变换字符
q:第一个模式匹配完成后退出
l:显示与八进制ASCⅡ码等价的控制字符
{}:在定位行执行的命令组
x:指定行号。
【x,y:指定从x到y的行号范围
/ 查询内容/:查询包含模式的行 ( # # )( % %)
/查询内容 /查询内容 /:查询包含两个模式的行
/ 查询内容 /,x:从与【 查询内容 】的匹配行到x号行之间的行
x,/查询内容 /:从x号行到与 【查询内容 】的匹配行之间的行
x,y!:查询不包括x和y行号的行】
n:读取下一个输入行,用下一个命令处理新的行
N:将当前读入行的下一行读取到当前的模式空间。
h:将模式缓冲区的文本复制到保持缓冲区
H:将模式缓冲区的文本追加到保持缓冲区
x:互换模式缓冲区和保持缓冲区的内容
g:将保持缓冲区的内容复制到模式缓冲区
G:将保持缓冲区的内容追加到模式缓冲区
插入
1. 将/etc/passwd 的内容列出并打印行号,同时,将2-5行删除显示
nl /etc/passwd | sed ‘2,5d’
注: sed是sed -e的简写, 后接单引号
2.同上删除第三行到最后一行
nl /etc/passwd | sed ‘3,$d’
3.把9.txt 文件中 old 替换为new
Sed ‘s/old/new/g’ 9.txt #
s///g 内容替换g全局替换