关于sed命令的pattern space(模式空间)和hold space(保留空间)

sed命令:pattern space(模式空间)和hold space(保留空间)

关于pattern space和hold space的关键交互命令

  • x :Exchange the contents of the hold and pattern spaces. 交换hold space和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(注:用man命令查询)

例题展示

为了方便大家更好的理解pattern space与hold space之间的区别,我用一个简单的例题来辅助说明。

  1. 自己编辑一个文件text.txt,内容如下:
    0.0.0.0
    1.1.1.1
    2.2.2.2
    输出以下形式:
    0.0.0.0:80,1.1.1.1:80,2.2.2.2:80

简单分析一下题目,我们要进行的主要是两个操作,一是在每行末尾插入“:80”,二是将换行符替换成“,”号。由于sed语句对行处理的便利性可知,先进行插入操作,再进行替换操作是不错的选择。

sed -i 's/$/:80/' text.txt

这样一条简单的语句即可完成第一步操作
这是操作后的结果:
这是操作后的结果

第二步也是关键的一步,如果我们直接使用s命令进行替换操作

sed -i 's/\n/,/ ' text.txt

再cat一下,我们会发现没有实现把换行替换成“,”的操作。
在这里插入图片描述
这是为什么呢,原因是sed命令它进行运算时是先将数据一行一行读入pattern space,然后在pattern space中处理一行,就会将原先那一行的数据清除,不会保留上一行的数据,也就导致计算机无法读取到换行符,从而替换操作失效。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值