码迷,mamicode.com
首页 > 系统相关 > 详细

linux上sed的详解

时间:2016-07-21 20:00:24      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:linux

语法:
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


本文出自 “一起来吧” 博客,请务必保留此出处http://daxionglaiba.blog.51cto.com/11790757/1828529

linux上sed的详解

标签:linux

原文地址:http://daxionglaiba.blog.51cto.com/11790757/1828529

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!