注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风之人生

人生如风,却无法如风般潇洒。

 
 
 

日志

 
 
关于我

一介草民,苟活于上海滩,以甲骨文为生,偶尔对一些国家大事有些兴趣,日常无事常以丝竹之声为乐。

网易考拉推荐

如何用好你的sed  

2010-08-05 17:36:41|  分类: Shell/Perl |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
      我估计有很多人在做shell开发时,不会用到sed这个工具,我们经常不回去使用它,即使使用,也常常是做查找替换来使用,但是他的确是一个很强大的工具,有很多功能我们可能常常忽略掉。
       先来看看sed一般的用法,就是我们最常用到的直接替换,在这里注意,sed是一个流编辑器,什么是流呢, 如果你经常用管道的话,应该就很熟悉,可以把输入输出看成像流水一样。这边是一些替换的例子。
      sed s/white/black/ <old >new #把old文件里的white替换成black 输出到new文件里,或者
   sed s/white/black/ old >new  #或者
   echo white | sed s/white/black #仅作测试
   从上面的例子看到,sed命令实际由这几部分构成:
   s  替换命令
   /../../  分隔符
   white  查找字符,实际上应该是正则表达式
   black  替换字符
   我们再来看一个例子,如果我们把/usr/local/bin替换成/usr/bin
   那么我们可以这样写 sed 's/\/usr\/local\/bin/\/usr/bin/' <old >new 
   天啊,太麻烦了,必须要这样写么,未必,我们的分隔符实际上可以用其他的字符来代替的。
   我们完全可以通过以下来实现。
   sed 's|/usr/local/bin|/usr/bin|' <old >new
   sed 's_/usr/local/bin_/usr/bin_' <old >new
   只要你在选择分隔符的时候不和替换字符重复就可以了。
有些时候,你可能需要一些给查找到的字符加一些修饰字符,那么就可以使用&操作符,例如:
    echo abc | sed 's/[a-z]*/(&)/' 
    (abc)
        我们在使用sed进行替换的时候,他会从输入流中找出第一个匹配的进行替换,而对后面的输入不再处理,如果你想处理所有的输入,可以使用全局选项g.例如
        echo "abc is not a good abc" | sed 's/abc/xyz/g'
       我们在默认的情况下,每次我们替换完成后,sed会把所有的行输出,但是我们可以使用如下方式只显示替换了的行。
       sed -n 's/pattern/&/p' <file
    
    好了,先写到这里吧,有时间写一些高级应用的例子吧。
   
   
  评论这张
 
阅读(215)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017