Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32668
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 30
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-26 12:29
个人简介

博主很懒,什么都没有留下。。

文章分类

全部博文(12)

文章存档

2017年(12)

我的朋友

分类: LINUX

2017-03-27 23:30:49

基础参数:sed OPTIONS... [SCRIPT] [INPUTFILE...]

一.s/REGEXP/REPLACE/FLAGS
FLAGS:
    1.t 和 T
        t 前面的命令执行成功就跳转到lable
        T 则是前面的命令执行失败就跳转到lable
        定义标签方式是冒号加标签名,例如::label
    简单例子:
        echo a,b,c,d,e,f,g,h,i,j,k,l,m,n | sed -r ':start;s/([^,]*),(.*)/\1 \2/;tstart'
        替换字符串里的 ‘,’ 为空格,每次s替换成功后,就跳到start标签
     另外还有b动作,强制跳转到标签,比如blable。
   
2.数字
        echo 1234qwer1234qwer | sed 's/1234//g2'
        执行一下就明白了,如果不加数字2,s命令会替换所有的1234为空,加上2代表只对第二个匹配到的字符串操作。
    3.e
        echo 1234qwer1234qwer | sed 's/*/echo &/e'
        执行一下,发生了什么?好像什么都没有操作。
        其实e是把REPLACE的内容直接当作命令执行。就像第一个例子的echo &。&代表匹配到的内容,所以看起来什么都没执行。
        看看大神是怎么用的吧。
        http://blog.chinaunix.net/uid-10540984-id-3995429.html
    其实e还可以这样用:
    seq 10 | sed 'e echo The title'(把执行命令的结果直接放到模式空间中。更多扩展有待深度挖掘)
二:匹配模式
    1,5 表示匹配1到5行
   1,~5 那这个代表什么呢?它表示匹配从第一行开始,到5的倍数
三:因为sed可以执行多条脚本,使用-e参数。所以可以使用命令行展开
    seq 10|sed -n -e{1,5},+1p
    类似于grep里的-A 1选项。显示匹配到行的后一行。当然可能实现其他有用的功能。
具体参见官方文档。
    
阅读(1316) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~