sed是一个非交互式文本编辑器,他可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘,文件重定向,字符串,变量甚至来自于管道的文本。sed适用于以下三种场合:

  • 编辑相对交互式文本编辑器而言太大的文件。
  • 编辑命令太复杂,在交互式文本编辑器中难以输入的情况。
  • 对文件扫描一遍,但是需要执行多个编辑函数的情况

调用sed有三种方式,一种为she'll命令行方式,另外两种是将sed命令写入脚本,然后执行该脚本文件。三种方式归纳如下:

  • shell命令行输入命令调用sed,格式为:
  1. sed [选项] 'sed命令' 输入文件
  • 将sed命令插入脚本文件后,通过sed命令调用它,格式为:
  • sed [选项] -f sed脚本文件 输入文件
  • 将sed命令插入脚本后,最常用的方法是将该脚本设置为可执行文件,然后直接执行该脚本,格式为:
  1. ./sed脚本文件 输入文件

sed命令选项及意义:

选项 意义
-n 不打印所有行到标准输出
-e 表示将下一个字符串解析为sed编辑命令,如果只传递一个编辑命令给sed,-e选项可以省略
-f 表示正在调用sed脚本文件

sed通常由定位文本行和sed编辑命令两部分组成,sed提供以下两种方式定位文本:

  1. 使用行号,指定一行或者行号范围
  2. 使用正则表达式

下表是sed定位文本的方法

选项 意义
x x为指定行号
x,y 指定从x到y的行号范围
/patten/ 查询包含模式的行
/pattern/pattern/ 查询包含两个模式的行
/pattern/,x 从与pattern匹配的行到x行号之间的行
x,/pattern/ 从x号行到与pattern匹配行之间的行
x,y! 查询不包括x,y行号的行

下面将在示例中说明sed的命令选项的意义,新建一个名为sedtest的文件,内容如下:(测试过程中可能会有修改)

this is a test file for sed
Test is real important
what i want to say is: haha
nobody is god except allah.
This is very IMPORTYANT
what you want to say is:goodbye!
where to go?
I don't know!
this cool!
  •  -n选项
#第一条命令,带-n选项,只打印第一行
[root@linuxTest ~]# sed -n '1p' sedtest
this is a test file for sed
#第二条命令,不带-n,不仅打印第一行,还打印输入文件的全部内容
[root@linuxTest ~]# sed '1p' sedtest
this is a test file for sed
this is a test file for sed
Test is real important
what i want to say is: haha
nobody is god except allah.
This is very IMPORTYANT

#打印行范围

root@linuxTest ~]# sed -n '2,6p' sedtest
  Test is real important
  what i want to say is: haha


nobody is god except allah.
  This is very IMPORTYANT

 
  • -e选项
#sed编辑命令“=”用来匹配is关键字的行号,如果希望行号和行内容都打印出来,则需要传递p和=两个编辑命令
[root@linuxTest ~]# sed -n -e '/is/=' -e '/is/p' sedtest this is a test file for sed Test is real important what i want to say is: haha

-s选项

#使用替换模式替换相应模式
#p选项,只替换每行第一个符合条件的文本
[root@linuxTest ~]# sed -n 's/is/IS/p' sedtest
thIS is a test file for sed
Test IS real important
what i want to say IS: haha
nobody IS god except allah.
ThIS is very IMPORTYANT
what you want to say IS:goodbye!
thIS cool!
#2p,如果每行含有两个及两个以上目标文本,则只替换每行第二个符合条件的文本
[root@linuxTest ~]# sed -n 's/is/IS/2p' sedtest
this IS a test file for sed
This IS very IMPORTYANT
#pg,如果该行中含有目标文本,则不论几个都替换。
[root@linuxTest ~]# sed -n 's/is/IS/pg' sedtest
thIS IS a test file for sed
Test IS real important
what i want to say IS: haha
nobody IS god except allah.
ThIS IS very IMPORTYANT
what you want to say IS:goodbye!
thIS cool!
#w,替换后,保存文本到另外一个文件
[root@linuxTest ~]# sed -n 's/is/IS/gw output' sedtest 

sed 笔记的更多相关文章

  1. sed笔记

    sed是stream editor缩写,表示流编辑器,它是一款文本处理工具,可以配合正则表达式进行文本替换. 1.使用正则表达式匹配并进行文本中的字符串替换 *使用-i选项可以直接将替换结果应用到源文 ...

  2. shell编程sed笔记

    源文件的内容 <modules> <module name="provider"> <!--发布模式--> <bds_mode/> ...

  3. 【Linux】sed笔记

     sed - stream editor for filtering and transforming text(用于过滤和转换文本的SED流编辑器),主要是以行为单位进行处理,可以将数据行进行替换. ...

  4. 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式

    正则表达式_百度百科 http://baike.baidu.com/link?url=ybgDrN2WQQKN64_gu-diCqdeDqL8LQ-jiQ-ftzzPaNUa9CmgBRDNnyx50 ...

  5. Sed&awk笔记之sed篇

    http://blog.csdn.net/a81895898/article/details/8482387 Sed是什么 <sed and awk>一书中(1.2 A Stream Ed ...

  6. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  7. Sed&awk笔记之sed篇(转)

    Sed是什么 <sed and awk>一书中(1.2 A Stream Editor)是这样解释的: Sed is a "non-interactive" strea ...

  8. sed、grep、awk -- 三剑客笔记记录

    sed常用操作笔记   1.删除文件最后一行: sed -i '$d' filename 2.递归替换内容:sed -i 's/内容A/内容B/g' filename sed -i "s/S ...

  9. Linux sed 使用笔记

    sed 工具使用笔记 Linux中经常需要对一些超大的文本文件进行操作,例如 GB 级别的 CSV.TXT.LOG 文件,如果使用 vi 或者 vim 编辑器操作会非常慢且卡,此时 sed 工具或许可 ...

随机推荐

  1. linux samba smb 在客户端无法连接使用

    netstat -nutlp查看是否启动进程 1.网络是否正常,是否可以ping通.2.Windows和Linux的防火墙全部关闭.3.samba的端口是否开启,tcp/139.tcp/445.udp ...

  2. 同一个windows server 部署多个tomcat

    只需要修改tomcat目录下conf下的server.xml文件即可,修改地方有三个,把下面这几个端口修改了为不同的端口即可,例如我把这几个端口统一减1了 <Server port=" ...

  3. 【转载】Win10系统桌面右键新建没有Word、Excel、PPT怎么恢复?

    Win10系统桌面右键新建没有Word.Excel.PPT怎么恢复? 以下正文转载至: 网址:http://www.xitongzhijia.net/xtjc/20170307/93471.html ...

  4. Dynamics 365 CRM 添加自定义按钮

    在添加自定义按钮之前,我们需要下载这个工具 RibbonWorkbench, 它是专门针对自定义命令栏和Ribbon区域. 下载之后是一个zip压缩包. 怎样安装RibbonWorkbench: Se ...

  5. java多线程同步器

    Java中多线程开发时,离不开线程的分工协作,常用的多线程的同步器有如下几种: 1.CountDownLatch 应用场景:等待一组线程任务完成后在继续执行当前线程. 用法:定义一个CountDown ...

  6. Python递归解压缩多级.zip压缩包

    参考如下代码(from:https://stackoverflow.com/questions/36285502/how-to-extract-zip-file-recursively-in-pyth ...

  7. sequelize的mssql配置

    配置文件 development: { username: process.env.LOCAL_USERNAME, password: process.env.LOCAL_PASSWORD, data ...

  8. 关于APS在企业生产计划上的应用

    本人本身是一个码农,已经服务了共和国各项事业(好像是说得有点漂,没办法段子看多了)大约一半工作时候了(按60岁退休的话),从一线的小码农,到现在成了老农,出产了不少或优或劣的各种码,几乎啥都做过.近几 ...

  9. 彻底删除msde2008(请先在控制面板中卸载).bat

    彻底删除msde2008(请先在控制面板中卸载).bat @echo offset /P dv=请确认强制删除MSDE2008(请先在控制面板中卸载),Y=删除,N=退出:if not defined ...

  10. 为什么我们不要 .NET 程序员

    英文原文:Why we don’t hire .NET programmers,编译:外刊IT评论 http://blog.jobbole.com/10389/ 也许你已经知道了,我们正在招聘最优秀的 ...