设为首页 加入收藏

TOP

【linux相识相知】sed命令(五)
2017-10-13 10:36:33 】 浏览:9534
Tags:linux 相识 相知 sed 命令
名:请回答1988,评分:9.6"被匹配,然后进行了行首的替换操作。

 

分支

 可以使用t来创建分支。使用t命令跳转到指定的标签,一样我们来看一个例子:

[root@localhost ~]# sed -n '
> h;n;H;x
> s/\n/,/
> :loop
> /白夜追凶/s/^/-/
> /-----/!t loop
> p' teleplay
-----剧名:白夜追凶,评分:9.0
剧名:秘密深林,评分:9.3
剧名:权利的游戏第七季,评分:9.3
剧名:请回答1988,评分:9.6

分析:
由于命令很长,我们可以将命令分行来写,当然也可以写在一行里面:

1:h;n;H;x:将第一行内容读取到模式空间,执行h,将模式空间的内容覆盖至保持空间,执行n,从文件中读取第二行覆盖至模式空间,执行H,将模式空间的内容追加至保持空间,执行x,将保持空间的内容和模式空间调换;(这里得到的结果就是模式空间中存在两行);

2:s@\n@,@,将换行符替换为逗号;这样原来的两行就变成了一行;

3::loop:定义了一个loop标签;

4:/白夜追凶/s/^/-/:是否匹配模式,如果匹配则在其行首添加一个"-";如果不匹配,则直接打印;

5:/-----/!t loop:是否存在5个"-",如果不存在,则跳到标签loop处,继续执行第4步添加"-",直到满足5个"-",则跳出循环打印。

最后,我们之前的所有的操作,都是没有修改文件的本身的,可以使用 -i 选项来直接修改文件本身,慎用,建议在使用之前,先备份一下文件!

[root@localhost ~]# sed -i '1d' poetry
[root@localhost ~]# 
[root@localhost ~]# cat poetry
2)Never lose hope.  
3)Always have faith,  
4)It allows you to cope.  
5)Trying times will pass,  
6)As they always do.  
7)Just have patience,  
8)Your dreams will come true.  
9)So put on a smile,  
10)You'll live through your pain.  
11)Know it will pass,  
12)And strength you will gain 

总结:sed的确是一个强大的文本处理工具,功能非常丰富,需要在今后的日常使用和工作中不断的熟悉和巩固。

 

参考链接:http://blog.jobbole.com/109088/     《三分钟学会SED》写的非常好!

 

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇CentOS 7 更改网卡名为eth0 下一篇用SecureCRT连接虚拟机中的Linux..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目