linux三剑客sed之模式空间与保持空间

pattern space(模式空间) and hold space (保持空间)
(H、h、G、g、x)

模式空间:sed处理文本内容行的一个临时缓冲区,模式空间中的内容会主动打印到标准输出,并自动清空模式空间

保持空间:sed处理文本内容行的另一个临时缓冲区,不同的是保持空间内容不会主动清空,也不会主动打印到标准输出,而是需要sed命令来进行处理


模式空间与保持空间的关系
模式空间:相当于流水线,文本行再模式空间中进行处理;
保持空间:相当于仓库,在模式空间对数据进行处理时,可以把数据临时存储到保持空间;作为模式空间的一个辅助临时缓冲区,但又是相互独立,可以进行交互,命令可以寻址模式空间但是不能寻址保持空间。可以使用高级命令h,H,g,G与模式空间进行交互。

   d      Delete pattern space.  Start next cycle.
          删除pattern space的内容,开始下一个循环

   h H    Copy/append pattern space to hold space.
          复制/追加pattern space的内容到hold space.(复制会覆盖原内容)

   g G    Copy/append hold space to pattern space.
          复制/追加hold space的内容到pattern space.复制会覆盖原内容)

   x      Exchange the contents of the  hold  and  pattern
          spaces.
          交换hold space和pattern space的内容.

下面使用一个实例来验证模式空间和保持空间的关系,以及理解高级命令h,H,g,G的作用

[root@localhost tmp]# cat >> num.txt <<EOF
> One
> Two
> Three
> EOF
[root@localhost tmp]# cat num.txt     
One
Two
Three
[root@localhost tmp]# 
[root@localhost tmp]# tac num.txt 
Three
Two
One
[root@localhost tmp]# 

使用sed来将num.txt文本的内容按照倒叙输出
实现的命令如下:

[root@localhost tmp]# sed '1!G;h;$!d' num.txt 
Three
Two
One
[root@localhost tmp]# 

注释:1!G:第一行不执行G命令
$!d:最后一行不执行d命令,即不删除模式空间一行

原理图:

linux三剑客sed之模式空间与保持空间


总结模式空间与保持空间关系
保持空间是模式空间一个临时存放数据的缓冲区,协助模式空间进行数据处理

转载于:https://blog.51cto.com/13691477/2113141

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值