原创 杜亦舒性能与架构

之前介绍过 awk 命令,sed 命令同样是非常重要的文本处理工具,涉及到linux shell开发时,几乎是避不开这两大利器的

sed 是 stream editor 的简写,是一种非交互式的流编辑器,默认情况下,sed并不会改变原文件本身,而只是对文本流进行修改,并将修改后的结果打印到标准输出中

与awk命令一样,sed处理文本时也是以行为单位,每处理完一行就立即打印出来,然后再处理下一行,直至全文处理结束

sed可做的编辑动作包括删除、查找替换、添加、插入、从其他文件中读入数据等

常用场景

(1)shell脚本中不便使用vi命令对文件进行编辑,sed命令则很方便

(2)文件太大,用vi编辑器打开文件有性能问题,就可以使用sed命令编辑

(3)有规律的文本修改,例如全文替换,使用sed命令非常快速

命令格式

sed [options] 'command' file

options 是参数

command 是命令集合

file 是要编辑的文件路径

下面通过一些例子来了解sed的基本用法

(1)删除

d 命令用来删除

$ sed '1d' Sed.txt

将Sed.txt的第一行删除后输出到屏幕

由于sed默认不修改原文件,如果希望保存修改后的文件则需要用重定向

$ sed '1d' Sed.txt > Sed2.txt

如果想直接修改文件,使用-i参数

$ Sed -i '1d' Sed.txt

这里不会有任何输出,而是直接修改了源文件,删除了第一行

删除指定范围的行

$ sed '1,3d' Sed.txt

删除第一行到最后行

$ sed '1,$d' Sed.txt

删除最后一行

$ sed '$d' Sed.txt

删除除指定范围以外的行(只保留第5行)

$ sed '5!d' Sed.txt

删除所有包含abc的行

$ sed '/abc/d' Sed.txt

/abc/ 是指定搜索条件

(2)查找替换

s 命令用来查找替换

$ sed 's/abc/ABC/' Sed.txt

替换Sed.txt中每行的第一个abc为ABC

也可以指定替换的个数,如想替换两个

$ sed 's/abc/ABC/2' Sed.txt

利用g选项,可以完成所有匹配值的替换

$ sed 's/abc/ABC/g' Sed.txt

/.../ 内部可以接收正则表达式,例如替换abc开头的

$ sed 's/^abc/ABC/' Sed.txt

(3)插入文本

i 命令可以在匹配行之前插入

a 命令可以在匹配行之后插入

在第二行前插入文本

$ sed '2 i test' Sed.txt

在第二行后插入文本

$ sed '2 a test' Sed.txt

也可以在匹配行的上一行插入内容

例如在匹配到abc的行的上一行插入

$ sed '/abc/i\test' Sed.txt

(4)打印

使用 p 命令可进行打印,这里使用sed命令时加 -n 参数,表示不打印没关系的行

打印出文件中的第一行

$ sed -n '1p' Sed.txt

使用p命令,只打印实际处理过的行,简化输出

$ sed -n 's/abc/ABC/p' Sed.txt

这个命令先替换abc为ABC,然后只打印出替换过的行

最新文章

  1. 浅谈Java泛型之<? extends T>和<? super T>的区别
  2. 淘宝SKU组合查询算法实现
  3. linux下查看一个进程的启动时间和运行时间
  4. WINDOWS黑客基础(4):查找进程运行的基址
  5. HTTP权威指南一
  6. C#中的Collection 2
  7. 【POJ1753】Flip Game
  8. iOS-NSAttributedString自定义文字变色
  9. cookie会话技术
  10. PAT乙1003
  11. java 制作QQ登录界面
  12. 安装pip、numpy、sklearn
  13. U3D 设置帧率与垂直同步
  14. 解决使用jedis连接是报DENIED Redis is running in protected mode错误
  15. ES6_入门(6)_函数的扩展
  16. Android system :led_class驱动
  17. Sqoop拒绝连接错误
  18. 转 php安装错误configure: error: Please reinstall the libcurl distribu
  19. C# FileStream MemoryStream BufferedStream StreamReader StreamWriter
  20. 深入浅出CSS:Div(一)

热门文章

  1. 【伪随机数】【搜索】【RE】【bugku】mountainclimbing WriteUp
  2. Linux虚拟化技术KVM、QEMU与libvirt的关系(转)
  3. Spring注解@Primary的意思
  4. 虚拟PDF打印机
  5. java gzip压缩与解压
  6. JAVA常见集合类
  7. Node.js中的express框架获取参数
  8. SIP消息类型和消息格式
  9. BOOST 实用手册(摘录自校友博客)
  10. CSS margin-top 属性