当前位置: 首页 > 知识库问答 >
问题:

sed打印模式1和模式2或模式3之间的文本

严俊彦
2023-03-14

sed能在PATTERN1和PATTERN2或pattern3之间打印文本吗?例如,对于下面的两个示例,我希望显示输出:

Not lemur
Lemur
  Ring-Tailed
  Mouse
  Catta
Fusa
  Bad
Not lemur
Lemur
  Ring-Tailed
  Mouse
  Catta
Lemur
  Ring-Tailed
  Mouse
  Catta

到目前为止,我的sed命令是sed-n'/^lemur/,$p',但这也会打印“fusa\n bad”,这是我不想要的。sed是否具有“或”特性,比如'/^Lemur/,($^[^\s])p',目的是从Lemur匹配到输入的末尾,或者不以空白开头的行。另外,我希望只打印第一个模式(狐猴)后面以空白开始的行(即,我不希望在第一个示例中打印“FUSA”)。

共有1个答案

常献
2023-03-14

sed是对单个字符串执行s/old/new/的最佳工具。对于任何比这更复杂的事情,只需使用awk。

$ awk '/^\S/{f=/^Lemur/} f' file1
Lemur
  Ring-Tailed
  Mouse
  Catta

$ awk '/^\S/{f=/^Lemur/} f' file2
Lemur
  Ring-Tailed
  Mouse
  Catta

如果\s没有GNU awk,那么只需使用[^[:space:]]即可。

 类似资料:
  • 问题内容: 我最近正在读《 学习JavaScript设计模式》 这本书。我没有得到的是模块模式和显示模块模式之间的区别。我觉得他们是同一回事。有人可以举一个例子吗? 问题答案: 至少有三种不同的方法来实现模块模式,但是显示模块模式是唯一具有正式名称的模块模式后代。 基本模块模式 模块模式必须满足以下条件: 私有成员住在封闭中。 公共成员暴露在返回对象中。 但是这个定义有很多歧义。通过以不同方式解决

  • 问题内容: 策略模式和命令模式有什么区别?我也在寻找Java中的一些示例。 问题答案: 通常,命令模式用于使对象脱离 需要完成的工作 -进行操作及其参数并将其包装在要记录的对象中,以备撤消,发送到远程站点等。随着时间的流逝,它们将往往是大量不同的Command对象,它们会通过系统中的给定点,并且Command对象将包含描述所需操作的各种参数。 另一方面,策略模式用于指定应 该如何做 ,并插入到较大

  • 问题内容: 装饰器模式和委托模式(如果有)之间有什么区别?我不仅想了解实现细节,还不想了解用例差异和如何使用它们的主观观点。 装饰图案 委托模式 编辑: 您能否指向使用这些模式的OS源代码(在OS项目中)(尤其是委托,因为在Java IO类中使用了装饰)。我正在寻找一些实际用法,而不仅仅是虚拟示例。也许这些模式是相同的,只是标题不同。随时写这个意见。 问题答案: 装饰器使用委派,但使用一种非常特定

  • 本文向大家介绍SQL Server中Star模式和Snowflake模式之间的区别,包括了SQL Server中Star模式和Snowflake模式之间的区别的使用技巧和注意事项,需要的朋友参考一下 星型图式是关系式图式,它遵循事实和维度的概念。事实表用于存储事件,例如登录,维度 表用于存储分区事件的参考数据。在星型模式中,由于此查询的执行时间非常快,因此表被完全非规范化。 雪花化是一种规范STA

  • 本文向大家介绍javascript设计模式之module(模块)模式,包括了javascript设计模式之module(模块)模式的使用技巧和注意事项,需要的朋友参考一下 模块是任何强大应用程序中不可或缺的一部分,它通常能帮助我们清晰地分离和组织项目中的代码单元。 js中实现模块的方法:  1.对象字面量表示法  2.Module模式  3.AMD模块  4.CommonJS模块  5.ECMAS

  • 本文向大家介绍Java设计模式之桥模式(Bridge模式)介绍,包括了Java设计模式之桥模式(Bridge模式)介绍的使用技巧和注意事项,需要的朋友参考一下 Bridge定义:将抽象和行为划分开来,各自独立,但能动态的结合。 为什么使用桥模式 通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以下两种: 1.这多个具体实现之间恰好是并