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. linux_曝出重大bash安全漏洞及修复方法

    日前Linux官方内置Bash中新发现一个非常严重安全漏洞(漏洞参考https://access.redhat.com/security/cve/CVE-2014-6271  ),黑客可以利用该Bas ...

  2. MSSQL发现第五到数据的第十

    第二十数据查询数据库,第十条数据,两起案件: 1,ID是连接的,当然这样的情况比較好查.直接SELECT就能够了.取ID大于5小于10就能够了, 这样的情况比較少. 2.ID不是连接的.假设要取第五条 ...

  3. linux 在系统启动过程

    从学习<鸟哥linux私人厨房> 用于在计算机系统启动,计算机硬件和软件由(它包含的操作系统软件)包括.对于操作系统在同一台计算机硬件方面的表现,该系统配备有硬件是公用,不同的系统是 的操 ...

  4. Linux下给mysql创建用户分配权限

    1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...

  5. HTML5 五彩圆环Loading加载动画实现教程

    原文:HTML5 五彩圆环Loading加载动画实现教程 今天我们要来介绍一款效果很特别的HTML5 Loading加载动画,不像其他的Loading动画,这款Loading动画颜色很丰富,并且在转圈 ...

  6. 【淡墨Unity3D Shader计划】五 圣诞用品: Unity在Shader三种形式的控制&amp;混合操作编译

    本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/42060963 作者:毛星云(浅墨)  ...

  7. 基于4.5Framework web程序、SQLSERVER数据库打包

    原文:基于4.5Framework web程序.SQLSERVER数据库打包 估计很多朋友和我一样,对于C/S程序打包很熟悉,但对于B/S程序打包一头雾水... 最近公司要求我们把项目和数据库(SQL ...

  8. QT最简单的程序执行过程分析(内含C++基础知识)

    打开QT Creator,新建一个“应用程序-Qt Widgets Application”项目: 输入名称scdc之后点击下一步. 在“构建套件”这个页面中直接点出下一步,然后再输入自己的类名Dat ...

  9. JQuery -&gt; 超级简单的下拉菜单

    使用jquery实现一个超级简单的下拉菜单. 效果图 最初的效果 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvRmVlTGFuZw==/font/5a6L ...

  10. uml系列(四)——类图

    类图是uml的核心.学习类图,总共须要掌握三个部分:类:类之间的关系:类图怎么画. 首先,类.老规矩,先来张图. 类是什么:举个简单的样例:猫.狗.猪三个都是动物.这里面的"动物" ...