sed之G、H、g、h使用

前言

作者不善言谈,如有错误请指正!!!

转载请注明出处!!!

sed之G、H、g、h使用

什么是sed?

sed是面向流的行编辑器,所谓面向流,是指接受标准输入的输入,输出内容到标准输出上。

sed如何处理数据?

sed在正常情况下,将处理的行读入模式空间(pattern space),脚本中的“sed-command(sed命令)”就一条接着一条进行处理,知道脚本执行完毕。然后该行呗输出,模式(pattern space)被清空;接着,在重复执行刚才的动作,文件中的新的一行被读入,直到文件处理完毕。

 

什么是Pattern Space,什么是Hold Space?

pattern space相当于车间sed把流内容在这里处理。

hold space相当于仓库,加工的半成品在这里临时储存。

PS:你可以将pattern space看成是一个流水线,所有的动作都是在“流水线”上执行的;而hold space是一个“仓库”,“流水线”上的东东都可以放到这里。

为什么要使用sed高级命令(G、H、g、h、n、N、x)?

由于各种各样的原因,比如用户希望在某个条件下脚本中的某个命令被执行,或者希望模式空间得到保留以便下一次的处理,都有可能使得sed在处理文件的时候不按照正常的流程来进行。这个时候,sed设置了一些高级命令来满足用户的要求。

sed命令:

+ g:[address[,address]]g 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容清除

+ G:[address[,address]]G 将hold space中的内容append到pattern space\n后

+ h:[address[,address]]h 将pattern space中的内容拷贝到hold space中,原来的hold space里的内容被清除

+ H:[address[,address]]H 将pattern space中的内容append到hold space\n后

+ d:[address[,address]]d 删除pattern中的所有行,并读入下一新行到pattern中

+ D:[address[,address]]D 删除multiline pattern中的第一行,不读入下一行

PS:不论是使用G、g还是H、h,它们都是将hold space里面的内容“copy”到pattern space中或者将pattern space中的内容“copy”到hold space中。

附上英文的解释(注意其中的高亮单词):

The "h" command copies the pattern buffer into the hold buffer. The pattern buffer is unchanged.

Instead of exchanging the hold space with the pattern space, you can copy the hold space to the pattern space with the "g" command. This deletes the pattern space. If you want to append to the pattern space, use the "G" command. This adds a new line to the pattern space, and copies the hold space after the new line.

 

示例:用sed模拟出tac的功能(倒序输出)。

文件内容

cat mm

1

2

3

 

解决方法:

sed ‘1!G;h;$!d’mm

ps:1!G第1行不 执行“G”命令,从第2行开始执行。

       $!d,最后一行不删除(保留最后1行)

图解分析过程

P:Pattern Space

H:Hold Space

蓝色:Hold Space中的数据

绿色:Pattern Space中的数据

参考:

《sed and awk 第二版》

Sed - An Introduction and Tutorial by Bruce Barnett

sed的高级应用 - haijd Article

转载于:https://www.cnblogs.com/fhefh/archive/2011/11/22/2259097.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能路上,怎么能少了它!

目前,人工智能的应用日渐广泛。而作为人工智能核心的机器学习,是一门多领域的交叉学科,专门研究计算机模拟或实现人类学习行为的方法,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。简单来说&a…

墙裂推荐:这可能是CAP理论的最好解释

> 英文蓝本:http://ksat.me/a-plain-english-introduction-to-cap-theorem 经过小码甲意译、原创配图, 建议收藏。你可能经常听到CAP定理, 这个定理描述了在设计分布式系统时的天然约束。就像其他文章一样, 本文以现实场景对比理解CAP定理…

台湾 计算机术语,快取,陣列,程式,这些台湾的计算机术语,你知道几个?|冷知识...

原标题:快取,陣列,程式,这些台湾的计算机术语,你知道几个?|冷知识作者 | 楼下小黑哥来源 | 程序通事今天就不写技术文了,写点轻松的,带大家涨点知识。最近闲来无聊的时候&#xff0c…

计算机原理试题b,计算机组成原理试题B答案

计算机组成原理试题B答案 (3页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9 积分计算机组成原理试题B答案一、 选择题1. D 2. A 3. A,C 4. B 5. B 6. B 7. B 8. B 9. A 10. D二、 填…

趣图:各种程序员的键盘热力图

图0:不保存不舒服斯基型图1:复制粘贴型 图2:复制粘贴型专用键盘图3:Vim 党新手(内心OS:门在哪里,我要退出)图4:Windows 程序员图5:01 党终极程序员 来源&am…

创建支持依赖注入、Serilog 日志和 AppSettings 的 .NET 5 控制台应用

翻译自 Mohamad Lawand 2021年3月24日的文章 《.NET 5 Console App with Dependency Injection, Serilog Logging, and AppSettings》 [1]在本文中,我们将构建一个 .NET 5 控制台应用程序,该应用程序支持依赖注入、日志记录和 appsettings 配置。你也可以…

作为一个前端,可以如何机智地弄坏一台电脑?

有人说,前端的界限就在浏览器那儿。无论你触发了多少bug,最多导致浏览器崩溃,对系统影响不到哪去。这就像二次元各种炫酷的毁灭世界,都不会导致三次元的世界末日。然而,作为一个前端,我发现是有方式打开次元…

IComparer实现文件名排序

↑↑↑ 点击左上角蓝字关注我,为您提供技术新动态。一、概要本文主要分享在文件对象处理中需要根据文件名排序思路。主要基于.net框架内提供的IComparer对象,它主要将定义类型为比较两个对象而实现的方法。二、详细内容1.场景在读取文件列表的时候&#…

WebService基于SoapHeader实现安全认证[webservice][.net][安全][soapheader]

WebService基于SoapHeader实现安全认证 本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE3.0来保护Web服务,如果使用的是Viaual Studio 2008可以使用WCF,WCF里面提供了更多的服务认证方法。以下提…

Java 常见的 30 个误区与细节!

1 在Java中,没有goto语句。因为大量使用goto语句会降低程序的可读性和可维护性,所以Java语言取消了goto的使用。同时,为了避免程序员自行使用goto所带来的混乱,Java语言仍将goto定义为一个关键字,但是没有定义任何语…

信息技术上册教案了解计算机,信息技术上册全册教案

信息技术上册全册教案[课时]:1节课[教学内容]:认识媒体;认识多媒体[教学目标]:1、了解媒体的概念和分类,理解多媒体的内涵和特征。2、能从日常的生活和学习中感受各种媒体及其作用3、培养学生对媒体、多媒体的喜爱,引发他们继续学习的热情。[教学重、难点…

轻量级NuGet—BaGet

1. 介绍BaGet是一个轻量级的包管理服务。有些时候公司或者个人不希望某一些包进行公开,那么就需要使用私有的包管理服务程序,该服务是用.netcore进行编写的(感谢开发者为.NET社区做出的贡献)Github:https://github.com/loic-sharma/BaGet官网…

为什么这个SQL Server DBA学习PowerShell--SQL任务

我开始学习PowerShell,是因为我在寻找一种快速和高效的方式收集有关我的SQL Servers的信息和更好地管理我的服务器工作负载的方式。我以为,我正在学习是另一门新的脚本语言,它能帮我做到前面提到的设想。实际上,我发现学习 PowerS…

30张地图看懂世界格局,用大数据说话

摘要:世界那么大,要了解的数据那么复杂,下面知识探索小编帮您总结一下关于世界的数据。1、 世界人口聚居地红色越深人口密度越大;灰色代表无人地带。2、全球各国平均智商分布图颜色越浅智商越高3、全球冰川融化后的世界地图4、全世…

.NET Core3.1 Dotnetty实战教程

Dotnetty实战系列视频由于在.net的环境当中对dotnetty相关资料相对较少,所以这里主要分享一个dotnetty使用教程希望能帮助到正在使用这套框架的开发者们。虽然这套框架已微软官方已经不在维护,但是这套框架里的设计是相当不错的通过阅读源码能学习到很多…

计算机u打字,win7电脑打字打不出来怎么办

在windows电脑当中,必不可少的一个操作就是打字了,输入代码需要打字,网页中搜索也需要打字,网络聊天也需要打字,不过最近有位win7系统用户,在电脑中打开浏览器,输入想要找的资料的时候&#xff…

我用Python爬取了14年所有的福彩3D信息,彩民们,只能帮你们到这了

作者|丁彦军来源|恋习Python前两天,在网上看到一个有意思的问题:彩票预测靠谱么?为什么还有那么多的人相信彩票预测?暂且不说,彩票预测是否靠谱?彩票预测也分人而异,江湖上骗术很多,…

C#: 8.0 和 9.0 常用新特性

在《带你了解C#每个版本新特性》 一文中介绍了,C# 1.0 到 7.0 的不同特性,本文接着介绍在 8.0 和 9.0 中的一些常用新特性。C# 8.0在 dotNET Core 3.1 及以上版本中就可以使用 C# 8 的语法,下面是 C# 8 中我认为比较常用的一些新功能。默认接…

选股公式 成功率测试 软件,通达信股票软件选股公式,99%的成功率,你还等什么?...

工具:通达信金融终端使用方法:1、通达信软件界面2、点击“功能”“公式系统”“公式管理器”“条件选股公式”“其他类型”,点击新建3、使用选股公式,点击ctrlt,弹出条件选股窗口4、选中公式,点击加入条件&…

小米 华为都要造车?.NET高薪潮来了!(附招聘链接)

近期网络沸沸扬扬的小米、华为、苹果 都要造车,其实百度、阿里和腾讯 也都入局了。互联网大佬们纷纷开始造车,跟我们小小程序员有关系吗?有!高薪机会来了,尤其是WPF!且听下文分解。物联网终极形态“互联网”…