sed 是 stream editor(流编辑器)的缩写。它能够完美配合正则表达式使用。sed命令众所周知的一个功能是文本的替换。

1、
sed可以替换给定文本中的字符串。它可以配合正则表达式来进行匹配
     $ sed  ' s/pattern/replace_string/ '  file
     或者
     $ cat file | sed sed  ' s/pattern/replace_string/ ' 
//这个命令从stdin中读取输入
     使用 -i 选项可以将替换结果应用于源文件。一般在进行替换后利用重定向来保存文件。
     $ sed  ' s/pattern/replace_string/ '  file > newfile
     用新文件来替换源文件:$ mv newfile file

     也可以用一行命令来完成: 
     $ sed  -i  ' s/pattern/replace_string/ '  file

     sed  ' s/pattern/replace_string/ '  file 可以将每行中第一处匹配样式的内容替换掉,要想把所有符合的字符都替换掉,需要在命令尾部加上参数 g,如下
     sed  ' s/pattern/replace_string/
g '  file 
     后缀/g表示sed会替换每一处匹配。

     当不需要每处替换时,可以选用/Ng来选择从第N处开始替换,如下:
     sed  ' s/pattern/replace_string/Ng'  file
     $ echo hello hello hellohello | sed 's/hello/HELLO/2g'
     $ hello HELLO HELLOHELLO
 
// 输出结果

     字符/ 在sed中起到定界符作用,我们也可选用任意定界符
     sed  ' s:pattern:replace_string:g '
     sed  '
 
s|pattern|replace_string|g'

     当定界符出现在要匹配的样式中时则需要用前缀 \ 来对其转义:
     sed  ' s;
he\;llo;replace_string; '

2、
sed 命令包含多个可用于对文本处理的选项。将这些选项已合理的顺序组合,可以在一行命令中解决很多复杂的问题。如下:

     
a、移除空白行:
     空白行可用'^$'进行匹配
     $ sed '/^$/d' file
     
   
 
 b、已匹配字符串标记(&)
     在sed中,用&标记匹配样式的字符串,就能够在替换字符串时使用已匹配的内容。
     $ echo this is an example | sed 's/\w\=/[&]/g'
     $ [this] [is] [an] [example]

     ps: \w为 正则表达式匹配字符(Perl风格的正则表达式),但是下表中的字符并不是所有的工具都支持
     
     利用正则表达式\w\+匹配一个单词,然后用 [ & ] 替换它。&对应于之前所匹配到的单词。
     
   
 
 c、子串匹配标记 \1
     &代表匹配给定样式的字符串。我们也可以匹配给定样式中的其中一部分。
     $ echo this is digit 7 in a number | sed ' s/digit \([0-9]\)/\1/'
     $ this is 7 in a number
     上述命令将digit 7 替换为7。样式中匹配到的子串是7.
     $ echo seven EIGHT | sed 's/\([a-z]\+\) \([a-z]\+\)/\2 \1/'
     $ EIGHT seven
     ([a-z]\+) 匹配第一个单词,([a-z]\+) 匹配第二个单词。 \1和 \2用来引用它们。这种引用被称为后向引用。 在替换部分,它们的次序被更改为\2 \1,因此结果就呈现出逆序的形式。

     
d、组合多个表达式
     利用管道组合多个sed命令。
     $ sed 'expression' | sed 'expression1'
     等价于: 
     $ sed 'expression; expression1'
     
   
 
 e、引用
     sed表达式通常用单引号来引用。不过也可以使用双引号。双引号会通过对表达式求值来对其进行扩展。
     如:
     $ text=hello
     $ echo hello world | sed "s/$text/HELLO/"
     $ HELLO world
     $text 求值的结果是hello
     
     

sed 入门的更多相关文章

  1. SED入门

    使用Linux多年,SED和AWK两大神器却始终无法得心应手的来提高自己的工作效率,每每需要查找替换,都要依赖于ST2等一众图形工具,深感愧疚,乃专门抽时间学习之,志在使之真正成为左右手.   SED ...

  2. sed入门详解教程

    sed是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作.sed本身是一个非常复杂的工具,有专门的书籍讲解sed的具体用法,但是个人觉得没有 ...

  3. 一分钟sed入门

    [转载于58同城沈剑] 1.简介 sed是一种行编辑器,它一次处理一行内容. 2.sed调用方式 sed [options] 'command' file(s) sed [options] -f sc ...

  4. Linux查找命令:grep,awk,sed

    grep grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 ...

  5. sed原理及使用

    前言 环境:centos6.5 sed版本:GNU sed version 4.2.1 本文的代码都是在这个环境下验证的. 一.简介 sed(Stream Editor)意为流编辑器,是Unix常见的 ...

  6. linux sed使用(转)

    sed入门详解教程 sed 是一个比较古老的,功能十分强大的用于文本处理的流编辑器,加上正则表达式的支持,可以进行大量的复杂的文本编辑操作.sed 本身是一个非常复杂的工具,有专门的书籍讲解 sed ...

  7. 本人常用的sed命令用法

    如果使用sed命令修改文件,需要为sed命令指定[-i]选项(i,insert表示插入指令),下面是本人常用到的几种场景: 1. 在文件最后一行的下一行添加配置 如:在配置文件/etc/profile ...

  8. Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)

    Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编   ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...

  9. Linux命令行文本工具

    浏览文件 cat 查看文件内容 more 以翻页形式查看文件内容(只能向下翻页) less 以翻页形式查看文件内容(可以上下翻页) head 查看文件的头几行(默认10行) tail 查看文件的尾几行 ...

随机推荐

  1. java_部署jar

    javaw -ms100m -mx256m -jar MyApp.jar 上面指定了使用最小100M最大256M内存. 4)如果main函数要带参数 java -mss10m -mx300m -jar ...

  2. hdu2191 悼念512汶川大地震遇难同胞——珍惜如今,感恩生活

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2191 Problem ...

  3. js拾遗:appendChild 添加移动节点

    原文:js拾遗:appendChild 添加移动节点 写js一年多了,一直以为自己很牛逼,开始写各种博文分享,昨天写了一篇<浅谈 IE下innerHTML导致的问题>在看了下面的评论,我才 ...

  4. [Phonegap+Sencha Touch] 移动开发34 gem安装compass,不编译scss,怎么办?

    很多人已经发现,今天,该命令 "gem install compass" 安装compass,正在使用 "compass compile" 编scss的时间将报 ...

  5. foj 2082 树链剖分 第2天

    擦,没啥好说的,这个模板至少得打10遍..纪念自己成功的打错了.. #include <iostream> #include <cstdio> #include <cst ...

  6. ThinkPHP框架设计与扩展总结

    详见:http://www.ucai.cn/blogdetail/7028?mid=1&f=5 可在线运行查看效果哦 导言:ThinkPHP框架是国内知名度很高应用很广泛的php框架,我们从一 ...

  7. centos7的安装

    初装centos7还是在九月份,那时候关于win7 下centos7硬盘安装的资料很少,现在就好多, 在这里备份下东西吧 首先是安装的时候,关于找从那个地方找image的问题. hda ,sda分别表 ...

  8. Google maps API开发

    原文:Google maps API开发 Google maps API开发(一) 最近做一个小东西用到google map,突击了一下,收获不小,把自己学习的一些小例子记录下来吧 一.加载Googl ...

  9. 关于android中sqllite对时间的操作

    sql 中有时间的类型,date,time,datetime,方便关于记录的维护,下面一个demo演示怎么在每条记录中默认增加时间 源码下载地址 http://www.codes51.com/code ...

  10. SQL_修改表结构

    ***********************************************声明*************************************************** ...