shell-sed
sed-stream editor流编辑器
sed编辑器是按行处理文件内容,正在处理的内容存放在模式空间(缓冲区)内,
处理完成后按照选项的规定输出或文件的修改;文件内容没有改变,除非使用重定向存储输出
主要用来自动编辑一个或多个文件,简化文件的反复操作
语法:
sed [options] '[command]' [filename]
options:
-n 抑制自动(默认的)输出 读取下一个输入行
-e 执行多个sed命令
-f 运行脚本
-i 编辑文件内容
-i,bak 编辑的同时创造.bak的备份
-r 使用扩展的正则表达式
command:
a 在匹配后追加
i 在匹配后插入
p 打印
d 删除
r/R 读取文件/一行
w 另存
s 查找
c 替换
y 替换
h/H 复制/追加模式空间(缓冲区)到存放空间
g/G 粘贴 从存放空间取回/追加到模式空间
x 两个空间内容的交换
n/N 拷贝/追加下一行内容到当前
D 删除\n之前的内容
P \n之前的内容
b 无条件跳转
t 满足匹配后跳转
T 不满足匹配时跳转
eg:
显示第三行内容
sed -n '3p' /tmp/passwd
显示前三行内容
sed -n '1,3p' /tmp/passwd
显示排除前三行
sed -n '1,3!p' /tmp/passwd
显示第三行及之后的三行
sed -n '3,+3p'
在文件头插入"###"并重定向
sed '1i###' > a.txt
最后追加###
sed '$###'
替换第三行为$$$
sed '3c$$$'
复制第二行至第四行到结尾
sed '2,4H;$G'
删除空行
sed '/^$/d'
把fstcb中包含ext4的行写入新文件中
sed'ext4/w newfstab' /etc/fstab