基础参数: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) |