本原创文章属于《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命令五分钟系列之二十三的更多相关文章

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

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

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

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

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

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  4. 《vi中的替换艺术》-linux命令五分钟系列之十一

    vi方面的内容不知道分类到哪里好,就放到<Linux命令五分钟系列>里吧! 今天编程,关于栈的一个小例子,其间我需要把”S.”替换为”S->”(替换不包括双引号). 其实这个不难,不 ...

  5. 《paste命令》-linux命令五分钟系列之二十

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  6. 《sort帮你排序》-linux命令五分钟系列之二十六

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  7. 《tr命令-优化版》-linux命令五分钟系列之二十五

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  8. 《sort命令的k选项大讨论》-linux命令五分钟系列之二十七

    本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...

  9. 《service》-“linux命令五分钟系列”之二

    本原创文章属于<Linux大棚>博客. 博客地址为http://roclinux.cn. 文章作者为roc 希望您能通过捐款的方式支持Linux大棚博客的运行和发展.请见“关于捐款” == ...

随机推荐

  1. CentOS的Redis内存分配策略配置

    安装了一主两从节点,启动之后发现有一个警告: 大概是说overcommit_memory设置成了0,在低内存环境下后台保存可能会失败,设置成1重启可解决. 然后,不太懂这个配置的含义,google一把 ...

  2. Go Slices: usage and internals

    Introduction Go's slice type provides a convenient and efficient means of working with sequences of ...

  3. sql语句相关整理

    select * from jcls_lawfirms where length(lf_2)=2 for updateselect * from jcls_lawfirms where length( ...

  4. 在Visual Studio中使用Pseudovariables来帮助调试

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:在Visual Studio中使用Pseudovariables来帮助调试.

  5. mysql 5.7新数据库sys解析(一)

    mysql5.7增加了sys 系统数据库,通过这个库可以快速的了解系统的元数据信息 这个库确实可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助   这个库在mysql5.7中是默认存在 ...

  6. Sublime Text 3103 Crack 破解 注册码

    随机复制下面的几四个注册码 粘贴到sublime text 3(Build 3103)注册框 就可以了! ----------------------------------------------- ...

  7. NoSQL 数据库产品学习总结(一)

    NoSQL 数据库产品学习总结(一) 本篇文章共分为四个章节,会陆续整理下 Memcached.Redis.tair.mongodb.hbase.SequoiaDB. Cassandra的相关知识. ...

  8. MySQL性能监控工具-MONyog

      1.登录配置界面 2.show processlist 查看当前使用的进程 3.警告建议你应该优化哪些参数. 4.介绍一下慢查询的配置,其它的可以自己配置,都是简单的英文. 该工具,用着还不错.其 ...

  9. 真相:中国版BBB用USB连电脑没有盘符的根本原因分析

    很多网友在问:为什么中国版的装完驱动插上板子没有显示端口号和69M的盘符??楼主发现,在开机启动的时候,加载g_multi模块时出现错误提示 invalid argument.         Emb ...

  10. Android应用程序所包含的四种组件和DDMS

    关注用户组件         Activity                               编辑文本 .玩游戏 后台进程               Service           ...