(转自http://blog.csdn.net/wl_fln/article/details/7281986)

Sed简介

sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下介绍的是Gnu版本的Sed 3.02。

-i选项:直接作用源文件,源文件将被修改。

sed命令和选项:

a\ 在当前行后添加一行或多行
c\ 用新文本替换当前行中的文本
d 删除行
i\ 在当前行之前插入文本
h 把模式空间的内容复制到暂存缓冲区
H 把模式空间的内容添加到缓冲区
g 取出暂存缓冲区的内容,将其复制到模式缓冲区
G 取出暂存缓冲区的内容,将其追加到模式缓冲区
l 列出非打印字符
p 打印行
n 读入下一行输入,并从下一条而不是第一条命令对其处理
q 结束或退出sed
r 从文件中读取输入行
! 对所选行以外的行应用所有命令
s 用一个字符串替换另外一个字符串

替换标志:

g 在行内进行全局替换
p 打印行
w 将行写入文件
x 交换暂存缓冲区和模式空间的内容
y 将字符转换成另外一个字符

sed例子:

打印:p命令

sed ‘/abc/p’ file

打印file中包含abc的行。默认情况sed把所有行都打印到屏幕,如果某行匹配到模式,则把该行另外再打印一遍

sed  -n ‘/abc/p’ file 和上面一样,只是去掉了sed的默认行为,只会打印匹配的行

删除:d命令

sed ‘3,$d’ file    删除从第3行到最后一行的内容。
sed ‘$d’ file 删除最后一行的内容
sed ‘/abc/d’ 删除包含abc的行。
sed ‘3d’ file 删除第三行的内容

替换:s命令

sed  ‘s/abc/def/g’ file 把行内的所有abc替换成def,如果没有g,则只替换行内的第一个abc
sed  -n ‘s/abc/def/p’ file 只打印发生替换的那些行
sed  ‘s/abc/&def/’ file 在所有的abc后面添加def(&表示匹配的内容)
sed  -n ‘s/abc/def/gp’ file 把所有的abc替换成def,并打印发生替换的那些行
sed  ‘s#abc#def#g’ file 把所有的abc替换成def,跟在替换s后面的字符就是查找串和 
替换串之间的分割字符,本例中试#

指定行的范围:逗号

sed  -n ‘/abc/,/def/p’ file 打印模式abc到def的行
sed  -n ‘5/,/def/p’ file 打印从第五行到包含def行之间的行。
sed /abd/,/def/s/aaa/bbb/g 修改从模式abc到模式def之间的行,把aaa替换成def

多重编辑-e

sed  -e ‘1,3d’ -e ‘s/abc/def/g’ file 删除1-3行,然后把其余行的abc替换成def

读文件:r命令

sed  ‘/abc/r newfile’ file 在包含abc的行后读入newfile的内容

写文件:w命令

sed  ‘/abc/w newfile’ file 在包含abc的行写入newfile

追加:a命令

sed  ‘/abc/a\def’ file 在包含abc的行后新起一行,写入def

插入:i命令

sed  ‘/abc/i\def’ file 在包含abc的行前新起一行,写入def

修改:c命令

sed  ‘/abc/c\def’ file 在包含abc的行替换成def,旧文本被覆盖

读取下一行:n命令

sed  ‘/abc/{n ; s/aaa/bbb/g;}’ file 读取包含abc的行的下一行,替换aaa为bbb

转换:y命令

sed  ‘y/abc/ABC’ file 将a替换成A,b替换成B,c替换成C(正则表达式元字符不起作用)

退出:q命令

sed  ‘/abc/{ s/aaa/bbb/ ;q; }’ file 在某行包含了abc,把aaa替换成bbb,然后退出sed。

暂存和取用:h命令(把模式行存储到暂存缓冲区)和g(取出暂存缓冲区的行并覆盖模式缓冲区)G(取出临时缓冲区的行)命令

h和g是复制行为(覆盖),H和G表示追加。    

sed  -e ‘/abc/h’  -e ‘$G’ file 包含abc的行通过h命令保存到暂存缓冲区,在第二条命令汇中,sed读到最后一行$时,G命令从暂存缓冲区中读取一行,追加到模式缓冲区的后面。即所有包含abc的行的最后一行被复制到文件末尾。
sed -e ‘/abc/{h; d;}’ 
      -e  ‘/def/{g; }’ file
包含abc的行会移到包含def的行上,并进行覆盖。

暂存和互换:h和x命令

sed  -e ‘/abc/h’  
-e ‘/def/x’ file
包含abc的行会被换成def的行。

转载于:https://www.cnblogs.com/kingstrong/p/6027086.html

shell-sed命令详解(转)相关推荐

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

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

  2. shell awk命令详解

    shell awk命令详解 awk原理 格式 实操 相关内建变量 简易需求 进阶操作 高阶操作 awk原理 逐行读取文本,默认时以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中, ...

  3. 【Linux篇】sed命令详解

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

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

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

  5. Linux Shell脚本入门教程系列之(八)Shell printf命令详解

    本文是Linux Shell脚本系列教程的第(八)篇,更多shell教程请看:Linux Shell脚本系列教程 在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对She ...

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

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

  7. 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 ...

  8. linux 之sed命令详解

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

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

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

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

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

最新文章

  1. delphi 实现屏幕旋转代码_Cocos Creator模拟射箭效果 | 附代码
  2. 苹果和虫子问题C++
  3. 95-190-300-源码-window-Window Assigner
  4. 什么是好的虚拟化项目交付(转)
  5. java url链接超时_Java HttpURLConnection超时和IO异常处理
  6. Matlab遗传算法TSP求解
  7. java集成kettle 8.2 获取转换的执行日志与步骤度量
  8. Layer子域名挖掘机
  9. [附源码]SSM计算机毕业设计中华美食网站JAVA
  10. 基于LayUI使用FullCalendar实现日程管理
  11. Excel个人学习笔记
  12. 三种照片保存形式 :JPEG、TIFF、RAW
  13. html5如何实现无序排列,无序列表让li横排
  14. facetime 来电提醒_从命令行打开FaceTime调用
  15. 对一级标题二级标题进行排序
  16. 计算机病毒14款应用,14款游戏类APP隐私不合规:和平精英、开心消消乐等
  17. [Android] ListView实现隔行变色(一)
  18. 新版PHP云进销存系统ERP销售库存仓库员工管理系统源码
  19. 服务器阵列卡安装win7系统,乐扩阵列卡IO-PCE9230-4IR组阵列方法和windows7系统安装到阵列组详细讲解(附视频) - 常见问题 - 技术支持 - 乐扩...
  20. 借助这个宝藏神器,我成为全栈了

热门文章

  1. UrlPager免费分页控件2.0版发布!
  2. linux关机命令详解
  3. Hyper-V 内存管理必须知道的
  4. Java注解Annotation详解
  5. Atom-无懈可击的Markdown编辑器
  6. Win7系统安装MySQL5.5.21图解教程
  7. PostgreSQL数据库服务端监听设置及客户端连接方法教程
  8. Appium环境搭建简介
  9. C++STL中的vector
  10. nexys3使用笔记1