语法:
sed [options] '{command}[flags]' [filename]
-e script 将脚本中指定的命令添加到处理输入时执行的命令中 多条件,一行中要有多个操作
-f script 将文件中指定的命令添加到处理输入时执行的命令中
-n 抑制自动输出
-i 编辑文件内容
-i.bak 修改时同时创建.bak备份文件。
-r 使用扩展的正则表达式
! 取反 (跟在模式条件后与shell有所区别)
q 退出 w 另存
r filename读取文件 R 读取一行
保持前面匹配的内容 (与正则分组类似)
sed常用内部命令
a 在匹配后面添加
i 在匹配前面添加
p 打印
d 删除
s 查找替换
c 更改
y 转换 N D P
/s replace替换
例子:(例子很简单,帮助互理解)
1. /s 例子:
[root@wangjianxiong ~]# echo "da xiong" |sed 's/da/xiao/'
xiao xiong
2. 在命令行中使用多个命令 -e 的例子
[root@wangjianxiong ~]# echo "da xiong" |sed -e 's/da/xiao/;s/xiong/mao/'
xiao mao
3. -f script 将文件中指定的命令添加到处理输入时执行的命令中(和-e差不多)
[root@wangjianxiong ~]# cat a
s/da/xiao/
s/xiong/mao/
[root@wangjianxiong ~]# echo "da xiong" | sed -f a
xiao mao
4. -n显示某行
sed -n '1p' filename #显示第一行
sed -n '$p' filename #显示最后一行
sed -n '1,2p' filename #显示第一行到第二行
sed -n '2,$p' filename #显示第二行到最后一行
[root@wangjianxiong ~]# cat b
a
b
c
d
e
[root@wangjianxiong ~]# sed -n '1p' b
a
[root@wangjianxiong ~]# sed -n '$p' b
e
[root@wangjianxiong ~]# sed -n '1,2p' b
a
b
[root@wangjianxiong ~]# sed -n '2,$p' b
b
c
d
e
5. y 转换为大写
[root@wangjianxiong ~]# sed '1,3y/abc/ABC/' b
A
B
C
d
e
6. g:表示用新文本替换现有文本的全部实例;p:表示打印原始的内容;w file:将替换的结果写入文件
[root@wangjianxiong ~]# cat c
a.a
b.b
c.c
d.d
e.e
[root@wangjianxiong ~]# sed 's/a/A/1' c
A.a
b.b
c.c
d.d
e.e
[root@wangjianxiong ~]# sed 's/a/A/g' c
A.A
b.b
c.c
d.d
e.e
[root@wangjianxiong ~]# sed '2{s/b/daxiong/;s/b/daxiong/}' c
a.a
daxiong.daxiong
c.c
d.d
e.e
[root@wangjianxiong ~]# sed '2{s/b/daxiong/}' c
a.a
daxiong.b
c.c
d.d
e.e
[root@wangjianxiong ~]# sed 's/a/A/w test' c
A.a
b.b
c.c
d.d
e.e
[root@wangjianxiong ~]# cat test
A.a
[root@wangjianxiong ~]# echo "this is a test" | sed p
this is a test
this is a test
7. d 删除
[root@wangjianxiong ~]# sed 2d c
a.a
c.c
d.d
e.e
8. a 在匹配后面添加;i 在匹配前面添加;c 更改
[root@wangjianxiong ~]# sed '3i\daxiong' c
a.a
b.b
daxiong
c.c
d.d
e.e
[root@wangjianxiong ~]# sed '3a\daxiong' c
a.a
b.b
c.c
daxiong
d.d
e.e
[root@wangjianxiong ~]# sed '3c\daxiong' c
a.a
b.b
daxiong
d.d
e.e
9. 显示行号 ; 统计有多少行
[root@wangjianxiong ~]# sed '=' c
1
a.a
2
b.b
3
c.c
4
d.d
5
e.e
[root@wangjianxiong ~]# sed -n "$=" c
5
10. -i 编辑文件内容
[root@wangjianxiong ~]# cat e
;www.baidu.com IN A 192.168.1.1
www.baidu.com IN A 192.168.1.2
www.baidu.com IN A 192.168.1.3
www.baidu.com IN A 192.168.1.4
[root@wangjianxiong ~]# sed -i 's/192/193/g' e
[root@wangjianxiong ~]# cat e
;www.baidu.com IN A 193.168.1.1
www.baidu.com IN A 193.168.1.2
www.baidu.com IN A 193.168.1.3
www.baidu.com IN A 193.168.1.4