- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
sedpatternspace以及holdspace
Pattern space和Hold space Sed是对数据流进行操作的一个强大的工具,大家已经经常使用到sed对文本进行修改,替换。这里就不介绍sed的使用方法了,本文主要介绍sed中的Pattern space和Hold space。理解了这两个概念有助于从本质上理解sed处理数据流的方式,尤其是像实现逆转、只输出奇数或偶数行等等功能,Pattern space和Hold space即模式空间和保留空间(也可以称之为缓冲区),保留空间的初始为空,我们可以认为是一个空行。下面图示了sed中的输入流,输出流,模式空间以及保留空间: 先简单介绍下sed的一般工作模式(在没有利用到Hold space的时候),pattern space每次从input中取一行数据到pattern space中,然后经过一些处理,将一行数据放入output中,然后output会输出到屏幕(默认为屏幕,也可以是文件)。记住,此时pattern space还储存着这一行数据,直到input再放入第二行数据取代第一行数据。 当sed的命令为sed [-n] ‘[hHgGx]p’file格式时,需要涉及到hold space,其实我们可以简单的讲hold space理解为sed的一个缓冲区就好了,只是这个缓冲区不会直接进行输出,并且只有pattern space可以对其进行操作,放入或者拿出数据(如上图所示)。 下面解释下[hHgGx]这几个参数:(以file做例子,file中的数据为:) Man sed中的解释为: h/H:copy/append pattern space to hold space(复制或者追加模式空间的数据至保留空间); g/G:copy/append hold space to pattern space(复制或者追加保留空间的数据至模式空间); x:exchange the contents of pattern space and hold space(交换模式空间和保留空间的数据); 一般会将h/H和g/G以及x联合起来用,可以达到栈和队列的使用目的。 G:sed G file 因为hold space的初始为一个空行,并且始终没有修改其中的数据,一直保持的是空行,所以在每次执行G命令时,会将空行追加到每行数据之后。 x:sed x;G file 因为开始x命令将hold space的空行和pattern space中的111111111交换,然后G命令又将111111111追加到pattern apace的空行之后,然后输出了,此时hold space中依旧为111111111,接着pattern space中进x命令将hold space的111111111和pattern space中换,然后G命令又加到pattern apace的111111111之后,然后输出了,依次类推,就输出了结果。可是看到过程如表格所示: 命令 sed x;G file hold space pattern space 执行命令过程 执行前 执行后 执行前 执行后 输出 执行x命令 空行 111111111 111111111 空行 无输出 执行G命令 111111111 111111111 空行 空行 111111111 执行x命令 11111111122222222 111111111 无输出 执行G命令22222222 111111111 111111111执行x命令3333333 3333333无输出 执行G命令 3333333 333333322222222 3333333 执行x命令 ……………………………… 大家应该能思考到为什么最后只有一个9 h:sed h;G file 命令进行操作的思路,大家可以参照x命令的方法进行一步步的演示。 H:sed H;x file g:sed 1h;g;x file 下面解释下1h;g;x中“1“的含义,表示只有第一行执行h命令,将111111111复制到hold space中去,之后每次执行g命令的时候,都是从hold space中将111111111复制出来,覆盖掉了pattern space中的数据,所以结果显示为打印了9行111111111。 而$表示只有最后一行执行这个命令。 在1或$和命令中添加“!“,表示只有第一行或者最后一行不执行这个命令。 有关于更改多的命令n/N、d/D等,请大家自己查阅man sed或者其他资料。在遇到复杂的命令的时候,希望大家可以手动进行画图来执行每个命令,这样就比较清楚
您可能关注的文档
最近下载
- 高中英语选择性必修4优质课公开课Unit 4 Project.pdf
- 精品解析:山东省济宁市实验中学2024-2025学年高一上学期12月月考历史试题(原卷版).docx VIP
- DB4413T 29-2022城市园林绿化养护管理规范.docx
- 2025青鸟消防JBF-11S控制器使用说明书.docx VIP
- 中国古代神话故事《天帝颛顼》.doc VIP
- 2019年输变电工程设计竞赛创新亮点.pdf
- (人教版2024)八年级地理上册新教材解读课件.pptx
- 2025年新人教版三年级上册语文全册教案.pdf
- 高中英语2025届高考高频词汇(共 688个 ).doc VIP
- 耐药结核病全口服短程治疗专家共识(2025)解读PPT课件.pptx VIP
文档评论(0)