寻址规则

常规寻址

  • 如果没有指定地址,那么命令将应用于每一行。
  • 如果只有一个地址,那么命令应用于与这个地址匹配的任意行。
  • 如果指定了由逗号分隔的两个地址,那么命令应用于匹配第一个地址(不包括第一个地址)到匹配第二个地址的行(包括此行)。
  • 如果地址后面跟有感叹号(!),那么命令就应用于不匹配该地址的所有的行。

举例

ed中使用寻址扩大受命令影响的行数;sed使用寻址限制受命令影响的行数。

测试文本:list

John Daggett,  King Road, Plymouth MA
Alice Ford, East Broadway, Richmond VA
Orville Thomas, Oak Bridge Road, Tulsa OK
Terry Kalkas, Lans Road, Beaver Falls PA
Eric Adams, Post Road, Sudbury MA
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, Bayshore Pkwy, Mountain View CA
Sal Carpenter, 6th Street, Boston MA

删除所有行

d

删除首行

1d

删除尾行

$d

删除空行

/^$/d

删除了从第一行直到第一个空行的所有的行,可用它来删除保存在文件中的Internet邮件消息中的邮件头。

1,/^$/d

嵌套寻址

sed使用大括号{}将一个地址嵌套在另一个地址中,或者在相同的地址上应用多个命令。

举例

/ˆ\.TS/,/ˆ\.TE/{
/ˆ$/d
s/ˆ\.ps /.ps /
s/ˆ\.vs /.vs /
}

书写要求

左大括号必须在行末

右大括号本身必须单独占一行

确保在大括号之后没有空格。

注释

在sed的System V版本中,注释只允许出现在第一行。而有的版本,则可以在脚本的任何地方放置注释,甚至是跟在命令行的后面。

注释以#开头

如果是#n,那么脚本不会自动产生输出。这和指定命令行选项-n是等价的。跟在n后面的其余的内容被看做是注释。在POSIX标准中,采用这种方式的#n必须是文件的前两个字符。

如果注释内容太多,一行输入不完,则使用反斜杠 \ 来续行,但是“新行”必须以#开头

sed进阶教程的更多相关文章

  1. shell进阶教程

    背景:就自己常用的shell脚本写作风格,总结了一些知识点.也是作为交接工作的一部分文档.部分内容单独写 #!/bin/sh # shell脚本进阶教程 # 1.常用知识点:变量设置/日期设置/格式化 ...

  2. duilib进阶教程 -- 总结 (17)

    整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207 (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完 ...

  3. duilib进阶教程 -- Container控件的bug (14)

    在<duilib进阶教程 -- TreeView控件的bug (9)>里,Alberl发现了两个bug,并解决了其中一个,现在教程已经接近尾声啦,所以Alberl就解决了另外一个bug. ...

  4. Unix sed实用教程系列目录[已完成]

    本系列文章已经译完了,译自awk-sed@theunixschool,收获颇丰,作者没有讲明白的我做了补充,并且尝试讲的更清楚,整理成系列索引,方便学习,开篇非译文,是我为了方便后面的理解写的一篇,感 ...

  5. Unix sed实用教程开篇

    已经看了一段时间的Linux Shell编程了,也能完成一些基本的使用,为了加深理解,恰好看到了The Unix School的一个sed&awk教程,不是简单的命令参数堆积,而是一个相当实用 ...

  6. Gensim进阶教程:训练word2vec与doc2vec模型

    本篇博客是Gensim的进阶教程,主要介绍用于词向量建模的word2vec模型和用于长文本向量建模的doc2vec模型在Gensim中的实现. Word2vec Word2vec并不是一个模型--它其 ...

  7. Bash脚本15分钟进阶教程

    转载: Bash脚本15分钟进阶教程 这里的技术技巧最初是来自谷歌的"Testing on the Toilet" (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有ba ...

  8. Android高手进阶教程(二十八)之---Android ViewPager控件的使用(基于ViewPager的横向相册)!!!

      分类: Android高手进阶 Android基础教程 2012-09-14 18:10 29759人阅读 评论(35) 收藏 举报 android相册layoutobjectclassloade ...

  9. awk与sed简明教程

    看到大牛写的关于awk和sed的简明教程,写得很好,为了尊重作者,就不全文转载了,这里标记下链接,方便以后查阅. awk简明教程:http://coolshell.cn/articles/9070.h ...

随机推荐

  1. HtmlHelper介绍

    目录 什么是HtmlHelper? 为什么要使用HtmlHelper? 清爽简单 修改路由不用改连接 很早就知道这个了,但是我一直不用.今天看了看书,准备以后都使用这个 什么是HtmlHelper? ...

  2. Win10安装Oracle Database 18c (18.3)

    下载链接:https://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html 我这里选择最新的 ...

  3. Node.js 服务端图片处理利器

    sharp 是 Node.js 平台上相当热门的一个图像处理库,其实际上是基于 C 语言编写 的 libvips 库封装而来,因此高性能也成了 sharp 的一大卖点.sharp 可以方便地实现常见的 ...

  4. 什么是 CDN(超形象)

    原文地址:https://blog.csdn.net/lu_embedded/article/details/80519898 618电商节.双十一购物狂欢节,到底是什么在支撑数以万计的秒杀活动?这就 ...

  5. 024 Android 自定义样式对话框(AlertDialog)

    1.AlertDialog介绍 AlertDialog并不需要到布局文件中创建,而是在代码中通过构造器(AlertDialog.Builder)来构造标题.图标和按钮等内容的. 常规使用步骤(具体参见 ...

  6. SpringBoot项目集成PageHelper使用

    SpringBoot项目集成PageHelper使用 一.开始 ​ 地址:https://github.com/pagehelper/Mybatis-PageHelper ​ 在spring boot ...

  7. (十七)springMvc 对表单提交的日期以及JSON中的日期的参数绑定

    文章目录 前言 `Ajax`提交表单数据 `Ajax`提交`JSON` 格式数据 解决输出JSON乱码的问题 控制JSON输出日期格式 小记 前言 springMVC 提供强大的参数绑定功能,使得我们 ...

  8. STM32之复用功能

    复用功能分复用输入,复用输出,STM32芯片内部集成多种模块,如GPIO.串口.i2c等,为使IO端口支持这些模块,厂家对IO端口进行扩展,同一个端口通过设置寄存器会有不同的功能.如下图IO结构图: ...

  9. Vue.js 2.x API 知识梳理(一) 全局配置

    Vue.js 2.x API 知识梳理(一) 全局配置 Vue.config是一个对象,包含Vue的全局配置.可以在启动应用之前修改指定属性. 这里不是指的@vue/cli的vue.config.js ...

  10. shiro是什么?

    是什么? Shiro是一个非常强大的.易于使用的.开源的.权限框架.它包括了权限校验.权限授予.会话管理.安全加密等组件. 为什么要使用shiro? 如果你是需要设计RBAC(Role Based A ...