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. Scriptcase演示程序,现在,他们使用SC多么简单的开发系统

    Scriptcase它内置了一批成熟的业务系统,我们的系统的一部分已经完成和功能微调,在互联网上.检查每个人Scriptcase如何简单可以加速的功能模块的发展. 访问 http://www.phps ...

  2. Android Permission denied 错误 ( 附Android权限大全 )

    Android Permission denied 错误(附Android权限大全) java.net.SocketException: Permission denied (maybe missin ...

  3. Windows Phone 8.1 多媒体(1):相片

    原文:Windows Phone 8.1 多媒体(1):相片 Windows Phone 8.1 多媒体(1):相片 Windows Phone 8.1 多媒体(2):视频 Windows Phone ...

  4. BZOJ 2120 色彩数 暴力

    标题效果:给定一个序列,两种操作: 1.询[l,r]间隔多少个不同的号码 2.单点变化 n,m<=1W 树盖树?树董事长?因此不必! 暴力之前,这个问题2s,不想复杂!适当的水太! 离散化一下! ...

  5. java设计模式之五原型模式(Prototype)

    原型模式虽然是创建型的模式,但是与工程模式没有关系,从名字即可看出,该模式的思想就是将一个对象作为原型,对其进行复制.克隆,产生一个和原对象类似的新对象.本小结会通过对象的复制,进行讲解.在Java中 ...

  6. C程序中引用自定义的C函数模块

    原文:C程序中引用自定义的C函数模块 我们知道,刚开始接触C语言编程,一般都是在一个.c或者.cpp(以下只说.c)的文件中编写代码,其中一定会有一个入口函数, 也就是main()函数,你可以将程序代 ...

  7. ORACLE PL/SQL编程之八:把触发器说透

    原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...

  8. 快速构建Windows 8风格应用26-本地应用数据

    原文:快速构建Windows 8风格应用26-本地应用数据 本篇博文主要介绍如何获取应用的设置和文件容器.如何将数据写入设置.如何从设置中获取数据.如何删除设置中数据.如何将数据写入文件.如何从文件中 ...

  9. 搭建环境Visual Studio 2013 社区版

    搭建环境Visual Studio 2013 社区版 ActiveReports 9刚刚发布3天,微软就发布了 Visual Studio Community 2013 开发环境. Visual St ...

  10. Asterisk 未来之路3.0_0007

    原文:Asterisk 未来之路3.0_0007 Modules Asterisk 是基于模块构建的.一个模块提供某个特定的功能,它是动态的被装载.比如:信道驱动(chan_sip.so),或可以连接 ...