sed杂谈(一)sed命令的打印总结

一     上两个sed的处理图

简化版的

根据简化来分析sed命令对字符串的处理

(1)  sed从输入文件中读'第一行到pattern space',pattern space中原来的内容(空的)被第一行数据覆盖

备注:如果有必要"备份"可以通过'h或H'加pattern space中的内容(第一行数据)copy或append到holdspace,如果以后不再对这个hold space做任何操作,那个这个数据就一直保持到文件处理结束

(2)  然后通过sed命令对pattern space中的数据进行'匹配处理',最后将匹配处理好的结果'保存到'patternspace中

(3)  最后从pattern space'输出'

-----------------------  '默认行为说明'  -----------------------

默认情况下,是会'自动打印'pattern space中内容

我们知道从step ①'送入'pattern的内容

如果'符合sed的处理条件  -->  模式匹配了',就会经过step ②和③的处理,'打印的内容'就是指经过step③处理的内容;

如果'不符'合,'也会'-->这是重点-->打印出step①送入的内容。

二    两个空间的概念

模式空间:保存'被sed命令处理过后'的的字符串!

保持空间:保持空间就是用来'备份模式空间'数据的,既然叫保持空间,所以只要你'备份在那',没有对它进行操作,这个保持空间里的数据就一直'保持不变'。

三     进入今天打印的重点

(1)n命令

解释:-n  --> '抑制'pattern space的'自动打印'行为

问题:自动'打印了什么'?  --> 打印的是-->经过模式空间'sed处理过后'和经过模式空间'没有经过处理的'

(2)p命令

明确两点:

   1)如果'模式不匹配',该行记录'不会'进入'模式空间'

   2)sed的p命令'非option参数'输出的是'经过sed命令处理过后'模式空间'返回的内容'

三    案例学习

(1)测试-n

s命令的flags(p)

(2)测试p命令

分析

输出结果:第二行'输出了两次'

原因:不管它'模式空间的内容'有没有经过sed处理,默认'不加 -n'都会'输出一次'

因为'第二行'正好匹配sed的处理条件,所以被输出一次,第二次是p输出的'强制输出经过sed处理的模式空间的内容'。

(3)打印偶数行

'n命令':简单来说就是'提前读取下一行','覆盖模型空间前一行',然后执行'后续命令' -->然后再读取新行,对新读取的内容重头执行sed

(4)打印奇数行

各种sed命令解析

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值