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. 从头开始学JavaScript (五)——操作符(二)

    原文:从头开始学JavaScript (五)--操作符(二) 一.乘性操作符 1.乘法:*      乘法操作符的一些特殊规则: 如果操作数都是数值,按照常规的乘法计算,如果乘积超过了ECMAscri ...

  2. 编写一个程序,将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中,a.txt文件中的单词用回车符分隔,b.txt文件中用回车或空格进行分隔

    package sundemo2; import java.io.File; import java.io.FileReader; import java.io.FileWriter; public ...

  3. 【百度地图API】如何在地图上添加标注?——另有:坐标拾取工具+打车费用接口介绍

    原文:[百度地图API]如何在地图上添加标注?--另有:坐标拾取工具+打车费用接口介绍 摘要: 在这篇文章中,你将学会,如何利用百度地图API进行标注.如何使用API新增的打车费用接口. ------ ...

  4. Webbrowser代理支持

    原文:Webbrowser代理支持 1 通过设置注册表,再用InternetSetOption发送INTERNET_OPTION_SETTINGS_CHANGED与INTERNET_OPTION_RE ...

  5. Windows下一个ROracle安装与使用

    ROracle一个简短的引论: ROracle这是R连接到接入Oracle数据库DBI(Oracledatabase interface)介面.这是基于OCI一个DBI兼容Oracle司机. 具体见说 ...

  6. 阐述 QUEST CENTRAL FOR DB2 八罪

    作为一个从事oracle plsql发展2猿 - 年计划,现在,在退出DB2数据仓库项目. 同PL/SQL Developer参考,下文PLSQL,阐述QUEST CENTRAL FOR DB2 5. ...

  7. Linux下防火墙设置

    Linux下开启/关闭防火墙命令  1) 永久性生效,重启后不会复原 开启:chkconfigiptables on 关闭:chkconfigiptables off 2) 即时生效,重启后复原 开启 ...

  8. memcached与.NET的融合使用2

    memcached与.NET的融合使用(二) memcached部署完成之后,对当前缓存中数据的监控就显得比较迫切,这里看到网上开源的memadmin比较小巧好用,决定用它来查看监控memcached ...

  9. MVC框架的插件与拦截器基础

    自制MVC框架的插件与拦截器基础 上篇谈到我自己写的MVC框架,接下来讲讲插件及拦截器! 在处理一些通用的逻辑最好把它封装一个插件或者拦截器,以便日后可以直接拿过来直接使用.在我的框架中可以通过继承以 ...

  10. 大规模web服务开发技术

    大规模web服务开发技术 总评        这本书是日本一个叫hatena的大型网站的CTO写的,通过hatena网站从小到大的演进来反应一个web系统从小到大过程中的各种系统和技术架构变迁,比较接 ...