sed: man sed查看帮助
语法:
sed [选项] '/定址/命令' 文件名
一、定址:就是告诉sed处理哪些行
1)没有定址,表示处理整个文件
2)有一个定址,处理匹配定址的行 2d /hello/
3)有两个定址,处理的是两个定址之间的内容 2,5d /hello/,/nohello/
二、选项
-n:关闭模式空间输出,不会输出不匹配的行
-f:后面需要指定sed脚本
-e:允许多项编辑,其实就是对同一行做多个操作 -e 2d -e 2g
-i:直接修改原文件
-r:支持扩展正则 + | ? {} ()
pattern:模式
三、常用命令
p 打印 print
d 删除 delete
s 替换 substitute
w 写入文件,另存为 write
r 读入文件 read
a 追加 append
i 插入 insert
c 修改,本行替换 change
四、操作
# head -5 /etc/passwd | cat -n > sed.pass
# cat sed.pass
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
1、s——替换
语法:sed '/定址/s/模式匹配(旧内容)/替换内容(新内容)/flag' file
模式匹配:可以使用正则表达式
flag: n为数字,第n次匹配到的内容
g 全局替换
1)默认只替换每行第一次匹配到的那个
# sed 's/root/ROOT/' sed.pass
2)指定替换哪个
# sed 's/root/ROOT/3' sed.pass
3)全局替换
# sed 's/root/ROOT/g' sed.pass
4)含有两个定址的替换
# sed '/root/,/adm/s/bin/binary/g' sed.pass
# sed '2,4s/\<bin/b/g' sed.pass