《sed的流艺术之三》-linux命令五分钟系列之二十三

本原创文章属于《Linux大棚》博客,博客地址为http://roclinux.cn。文章作者为rocrocket。
为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅。
===
[正文开始]
上文接:《sed的流艺术之二》-linux命令五分钟系列之二十二
例五 给某些字符串后面插入些内容
[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing
London[rocrocket@rocrocket programming]$ sed ‘s/B.*/&2008/’ mysed.txt
Beijing2008
London
这个命令的作用是将包含’B.*’的地方后面加上2008四个字符。这个命令里用到了&字符,这是一个技巧,高手和菜鸟比,这些技巧很重要哦。&表示“被匹配的部分”,在这里就是’Beijing’喽!
例六 将行的第一个Beijing后加上2008,在最后一个Beijing后加上2008
[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing Beijing Beijing Beijing
London London London London
[rocrocket@rocrocket programming]$ sed ‘s/\(Beijing\)\(.*\)\(Beijing\)/\12008\2\32008/’ mysed.txt
Beijing2008 Beijing Beijing Beijing2008
London London London London
这个命令稍显复杂,其中用到了一个技巧,就是预存储,即被\(和\)括起来的匹配内容会被按顺序存储起来,存储到\1、\2…里面。这样你就可以使
用\加数字来调用这些内容了。这个例子就是使用了这个技巧,分别存储了三个内容,分别为匹配Beijing、匹配.*和匹配Beijing。
你可能会问,我如果想在第一个t前加上M,在第二个t前加上N,怎么做呢?
这个就需要使用正则表达式的非贪婪算法了,一般是在?、+、*、{n}、{m,}、{m,n}的后面紧跟一个?,就会使匹配从贪婪算法变成非贪婪算
法,但是遗憾的是,sed并不支持这种非贪婪算法,所以我们无法使用sed实现这种想法,只能另寻其他工具了。这也算是sed的一个遗留问题吧。
例七 可以用模式来定位行范围
[rocrocket@rocrocket programming]$ cat mysed.txt
Beijing 2003
Beijing 2004
Beijing 2005
Beijing 2006
Beijing 2007
Beijing 2008
Beijing 2007
[rocrocket@rocrocket programming]$ sed -n ‘/2005/,/2007/p’ mysed.txt
Beijing 2005
Beijing 2006
Beijing 2007
我们使用/2005/来匹配行范围的首行,用/2008/来匹配行范围的最尾行。可以看到,在匹配尾行时,只要遇到符合要求的行,即停止,不会再继续向后匹配了。(只是匹配到第一个2007,并没有匹配到第二个2007)
例八 用-e选项来设置多个command
还记得command部分吧,现在我告诉你,sed命令可以包含不只一个的command,但是当包含超过一个的command的时候,必须在每个command前面加上选项-e。
[rocrocket@rocrocket programming]$ sed -n -e ‘1,2p’ -e ‘4p’ mysed.txt
Beijing 2003
Beijing 2004
Beijing 2006
虽然这个例子看似是为了使用-e而使用-e,但是-e在有些时候是很有用的。相信我,呵呵:)
记住,-e后面必须立即接command,不允许再夹杂其他的选项了。
例九 可以使用-f来设定包含command的文件名称
如果你的command很长,那么可以将其写在文件里,然后使用-f来设定这个文件作为command部分:
[rocrocket@rocrocket programming]$ cat callsed
/2004/,/2006/p
[rocrocket@rocrocket programming]$ sed -n -f callsed mysed.txt
Beijing 2004
Beijing 2005
Beijing 2006
两个命令就讲清楚了-f的用法。相信你能看懂。
《sed的流艺术之三》-linux命令五分钟系列之二十三的更多相关文章
- 《sed的流艺术之四》-linux命令五分钟系列之二十四
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《sed的流艺术之二》-linux命令五分钟系列之二十二
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《sed的流艺术之一》-linux命令五分钟系列之二十一
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《vi中的替换艺术》-linux命令五分钟系列之十一
vi方面的内容不知道分类到哪里好,就放到<Linux命令五分钟系列>里吧! 今天编程,关于栈的一个小例子,其间我需要把”S.”替换为”S->”(替换不包括双引号). 其实这个不难,不 ...
- 《paste命令》-linux命令五分钟系列之二十
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《sort帮你排序》-linux命令五分钟系列之二十六
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《tr命令-优化版》-linux命令五分钟系列之二十五
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《sort命令的k选项大讨论》-linux命令五分钟系列之二十七
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 《service》-“linux命令五分钟系列”之二
本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...
随机推荐
- CentOS的Redis内存分配策略配置
安装了一主两从节点,启动之后发现有一个警告: 大概是说overcommit_memory设置成了0,在低内存环境下后台保存可能会失败,设置成1重启可解决. 然后,不太懂这个配置的含义,google一把 ...
- Go Slices: usage and internals
Introduction Go's slice type provides a convenient and efficient means of working with sequences of ...
- sql语句相关整理
select * from jcls_lawfirms where length(lf_2)=2 for updateselect * from jcls_lawfirms where length( ...
- 在Visual Studio中使用Pseudovariables来帮助调试
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:在Visual Studio中使用Pseudovariables来帮助调试.
- mysql 5.7新数据库sys解析(一)
mysql5.7增加了sys 系统数据库,通过这个库可以快速的了解系统的元数据信息 这个库确实可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助 这个库在mysql5.7中是默认存在 ...
- Sublime Text 3103 Crack 破解 注册码
随机复制下面的几四个注册码 粘贴到sublime text 3(Build 3103)注册框 就可以了! ----------------------------------------------- ...
- NoSQL 数据库产品学习总结(一)
NoSQL 数据库产品学习总结(一) 本篇文章共分为四个章节,会陆续整理下 Memcached.Redis.tair.mongodb.hbase.SequoiaDB. Cassandra的相关知识. ...
- MySQL性能监控工具-MONyog
1.登录配置界面 2.show processlist 查看当前使用的进程 3.警告建议你应该优化哪些参数. 4.介绍一下慢查询的配置,其它的可以自己配置,都是简单的英文. 该工具,用着还不错.其 ...
- 真相:中国版BBB用USB连电脑没有盘符的根本原因分析
很多网友在问:为什么中国版的装完驱动插上板子没有显示端口号和69M的盘符??楼主发现,在开机启动的时候,加载g_multi模块时出现错误提示 invalid argument. Emb ...
- Android应用程序所包含的四种组件和DDMS
关注用户组件 Activity 编辑文本 .玩游戏 后台进程 Service ...