设为首页 收藏本站
查看: 518|回复: 0

[经验分享] linux上sed的详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-7-22 09:04:40 | 显示全部楼层 |阅读模式
语法:
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 例子:
[iyunv@wangjianxiong ~]# echo "da xiong" |sed 's/da/xiao/'
xiao xiong

2. 在命令行中使用多个命令 -e 的例子
[iyunv@wangjianxiong ~]# echo "da xiong" |sed -e 's/da/xiao/;s/xiong/mao/'
xiao mao

3. -f script 将文件中指定的命令添加到处理输入时执行的命令中(和-e差不多)
[iyunv@wangjianxiong ~]# cat a
s/da/xiao/
s/xiong/mao/

[iyunv@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             #显示第二行到最后一行
[iyunv@wangjianxiong ~]# cat b
a
b
c
d
e
[iyunv@wangjianxiong ~]# sed -n '1p' b
a
[iyunv@wangjianxiong ~]# sed -n '$p' b
e
[iyunv@wangjianxiong ~]# sed -n '1,2p' b
a
b
[iyunv@wangjianxiong ~]# sed -n '2,$p' b
b
c
d
e

5. y 转换为大写
[iyunv@wangjianxiong ~]# sed '1,3y/abc/ABC/' b
A
B
C
d
e

6. g:表示用新文本替换现有文本的全部实例;p:表示打印原始的内容;w file:将替换的结果写入文件
[iyunv@wangjianxiong ~]# cat c
a.a
b.b
c.c
d.d
e.e
[iyunv@wangjianxiong ~]# sed 's/a/A/1' c
A.a
b.b
c.c
d.d
e.e
[iyunv@wangjianxiong ~]# sed 's/a/A/g' c
A.A
b.b
c.c
d.d
e.e
[iyunv@wangjianxiong ~]# sed '2{s/b/daxiong/;s/b/daxiong/}' c
a.a
daxiong.daxiong
c.c
d.d
e.e
[iyunv@wangjianxiong ~]# sed '2{s/b/daxiong/}' c
a.a
daxiong.b
c.c
d.d
e.e
[iyunv@wangjianxiong ~]# sed 's/a/A/w test' c
A.a
b.b
c.c
d.d
e.e
[iyunv@wangjianxiong ~]# cat test
A.a
[iyunv@wangjianxiong ~]#  echo "this is a test" | sed p
this is a test
this is a test

7.  d   删除
[iyunv@wangjianxiong ~]# sed 2d c
a.a
c.c
d.d
e.e
8.  a   在匹配后面添加;i   在匹配前面添加;c 更改
[iyunv@wangjianxiong ~]# sed '3i\daxiong' c
a.a
b.b
daxiong
c.c
d.d
e.e
[iyunv@wangjianxiong ~]# sed '3a\daxiong' c
a.a
b.b
c.c
daxiong
d.d
e.e
[iyunv@wangjianxiong ~]# sed '3c\daxiong' c
a.a
b.b
daxiong
d.d
e.e

9. 显示行号 ; 统计有多少行
[iyunv@wangjianxiong ~]# sed '=' c
1
a.a
2
b.b
3
c.c
4
d.d
5
e.e
[iyunv@wangjianxiong ~]# sed -n "$=" c
5

10. -i 编辑文件内容
[iyunv@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
[iyunv@wangjianxiong ~]# sed -i 's/192/193/g'  e
[iyunv@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


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-247616-1-1.html 上篇帖子: Centos7中lvm缩容后导致无法挂载 下篇帖子: Linux登录时/etc/profile、~/.bash_profile等几个文件的加载过程 linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表