本文章编辑整理自:http://apps.hi.baidu.com/share/detail/35034009

四、常用实例
4.1、删除: d命令
sed '2d' 1.txt           删除1.txt文件的第二行。
sed '2,$d' 1.tx         删除1.txt文件的第二行到末尾所有行。
sed '$d' 1.txt           删除1.txt文件的最后一行。
sed '/test/'d 1.txt      删除1.txt文件所有包含test的行。
4.2、替换: s命令
sed 's/test/mytest/g' 1.txt
在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
sed  -n  's/ ^ test/mytest/ p ' 1.txt
-n选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。
sed 's/ ^ 192.168.0.1/ & localhost/' 1.txt
&符号表示原字符串。所有以 192.168.0.1开头的行都会被替换成它自已加  localhost,变成 192.168.0.1localhost。
sed -n 's/ \( love \) able/ \1 rs/p' 1.txt
love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
sed 's # 10 # 100 # g' 1.txt
不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“ #”在这里是分隔符,代替了 默认的“ / ”分隔符。表示把所有10替换成100。
4.3、选定行的范围: ,(逗号)
sed -n '/test/ , /check/p' 1.txt
所有第一个出现test的行和最后一个出现check的行之间的所有行都被打印。这个是有 方向性的。如果只有包括test的行,而没有包括check的行的话,只打印包括test的行。
sed -n '5,/^test/p' 1.txt
打印从第五行开始到第一个包含以test开始的行之间的所有行。
sed '/test/,/check/s/^/robin/' 1.txt
对于模板test和west之间(闭包含)的行,每行的前5个字符串用robin替换。但是不知道为什么我用 sed '/test/,/check/s/$/robin/' 1.txt会得到同样的结果。
4.4、多点编辑:e 命令
sed -e '1,5d' -e 's/test/check/' 1.txt
-e选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执 行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
注意: 选定行的范围的参照是原文件,不是缓冲区。所有前一条命令脚本的操作,不影响后面命令脚本的行范围的选定。
sed --expression='s/test/check/' --expression='/love/d' 1.txt
--expression选项的功能和 -e一样。
4.5、从文件读入:r 命令
sed '/test/ r  2.txt' 1.txt
2.txt文件里的全部内容被读进来,显示在与test匹配的行后面,如果匹配多行,则2.txt文件的内容将显示在所有匹配行的下面。
4.6、写入文件:w 命令
sed -n '/test/ w  2.txt' 1.txt
在1.txt中所有包含test的行都被写入2.txt文件里。如果2.txt文件已经存在,那么它里面的内容会被全部清空,如果不存在,则创建它。
4.7、追加命令:a 命令
sed '/^test/a\this is robin' 1.txt
以test开头的行下面追加一行,其内容为'this is a robin',sed要求命令 a后面有一个反斜杠。
4.8、插入:i 命令
sed '/^test/i\this is robin' 1.txt
如果test被匹配,则在其前插入一行,其内容为'this is a robin',sed要求命令 i后面有一个反斜杠。
4.9、下一个:n 命令
sed '/test/{ n; s/aa/bb/; }' 1.txt
如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。
注:该命令我使用失败。
4.10、变形:y 命令
sed '1,10y/abcde/ABCDE/' 1.txt
把1--10行内所有abcde分别转变为ABCDE.
注意,这里是针对字符操作,不是对字符串进行操作,因此不能使用正则表达式。
4.11、退出:q 命令
sed '10 q ' 1.txt
打印完第10行后,退出sed。

4.12、 保持,获取,互换: h 命令,G 命令和 x 命令
在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将 打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。
sed -e '/test/{ h ; d }' -e '/check/ G ' 1.txt
在这个例子里,匹配test的行被找到后,将其行存入模式空间, h命令 将其复制并存入一个称为保持缓存区的特殊缓冲区内。保存缓冲区只能保存一条行的内容。如果此时保存缓冲区已经有内容,则先把内容清空,再把找到的当前匹配行放入其中。接着 d命令 把该行在模式空间删除掉。第二条语句的意思是,当到达匹配check的一行后, G命令 取出保持缓冲区的行,然后把它追加到当前匹配check的那一行在于模式空间中对应行的下一行。这里追加的是全新的,单独的一行。
sed -e '/test/{h;d}' -e '/check/{x}' 1.txt
第一条语句的意思 同上 。第二条语句的意思是,当到达匹配check的一行后, x命令 把模式空间和保持缓冲区的内容进行互换 。也就是把包含test与check的行互换。
五、脚本文件
Sed脚本文件是一个sed的命令清单,启动Sed时以 -f 选项引导脚本文件名。Sed对于脚本文件中输入的命令非常挑剔,在命令的末尾不能有任何空白或文本,如果在一行中有多个命令,要用分号分隔。以 # 开头的行为注释行,且不能跨行。

sed命令详解(下)相关推荐

  1. ubuntu下sed命令详解 - Dicky - 开源中国社区

    ubuntu下sed命令详解 - Dicky - 开源中国社区 ubuntu下sed命令详解 - Dicky - 开源中国社区 ubuntu下sed命令详解     7人收藏此文章, 我要收藏 发表于 ...

  2. linux sed p变量,Linux sed 命令详解系列教程之各种问题解决

    本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...

  3. 【转】【Linux】sed命令详解

    sed命令详解 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space ...

  4. LInux sed命令详解

    文章转自:http://qifuguang.me/2015/09/21/sed%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3/#comments sed命令详解 sed是st ...

  5. linux 之sed命令详解

    sed命令详解 sed是什么 sed是linux文本处理三剑客之一,全称 StreamEDitor,非常著名的行编辑器,功能十分强大. sed的工作过程 sed处理文本时每次从文件复制出来一行,放在工 ...

  6. linux sed.写文件,Linux文件处理sed命令-linux sed命令详解-linux sed写入文件-嗨客网

    Linux文件处理sed命令详解教程 Linux sed命令使用 Linux sed 命令处理时,把当前处理的行存储在临时缓冲区中,称为 "模式空间"( oattern space ...

  7. Linux的sed命令详解大全

    Linux的sed命令详解大全 一.sed命令介绍 二.sed 的运行模式 三.sed的相关选项 四.sed基本用法 1.sed语法 2.sed的查看功能 ①查看passwd文件的第5到第8行内容 ② ...

  8. 【Linux篇】sed命令详解

    文章目录 sed命令详解 一.基本语法 二.实操案例 内部命令选项说明 命令选项说明 标志 三.sed小技巧 sed命令详解 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时 ...

  9. linux sed 命令,Linux sed 命令详解

    Linux sed 命令详解 Linux sed 命令是利用脚本处理文本文件. sed 可按照脚本的指令来处理.编辑文本文件. sed 主要用于自动编辑一个或多个文件.简化对文件的反复操作.编写转换程 ...

  10. cut\grep\awk\sed命令详解

    cut\grep\awk\sed命令详解 1.cut命令详解及实例 (1)作用:提取文件中指定的列 语法格式:cut  选项  文件名   (2)选项作用:      -d 分隔符     按照指定的 ...

最新文章

  1. 实现简书个人中心UI效果
  2. 七、处理机调度概念、层次
  3. Visual Studio 2013开发 mini-filter driver step by step 获取文件读写内容(6)
  4. static关键字总结
  5. 设计模式(中介者模式-对象去耦)
  6. xMenuTools(超实用右键菜单工具) v7.6
  7. 前端架构之路:使用Vue开始第一个项目
  8. 什么是Mybatis配置解析?(源码+图文)
  9. 推理集 —— 特殊的时间
  10. livedata mvvm_Android MVVM LiveData数据绑定
  11. Gstreamer播放videotestsrc流程(十四)
  12. 使用PowerDesigner
  13. h5游戏引擎有哪些?h5制作模板游戏的教程和流程是什么?
  14. vue项目中 路径使用的@和~的区别
  15. 关于Android 在线预览PDF文件
  16. windows DoraOS 双系统云终端安装
  17. HTML入门笔记12-HTML中备注写法
  18. 【霍尔榜】BJ金属3D打印常见问题解析
  19. mysql 从第几个字符串开始截取_Mysql字符串截取函数SUBSTRING的用法说明
  20. Ionic2像使用字体图标一样使用png图标等

热门文章

  1. 手机电路板文件_三轮制裁后,华为手机业务还能不能继续?“胡杨”就是答案...
  2. STM32之ADC的理解及运用
  3. 常见的GNU汇编伪指令
  4. Java --- JVM动态链接与方法调用
  5. 【STC单片机学习】第五课:动手写代码之前必须的准备工作
  6. KubernetesDatabase-k8s中helm方式安装postgresql及pgadmin
  7. 私有vlan(PVLAN)实验配置步骤
  8. 苹果电脑怎么安装python库_Mac环境下安装python库时出现ModuleNotFoundError: No module named 'XXX'...
  9. 浙大pat 1017
  10. 12Cr2Mo1R(H)化学成分