【Linux】sed高阶用法 保持空间和模式空间命令(n N x h H g G P t)

目录

一、sed 有两个内置的存储空间:

二、高级编辑命令:

1、命令n与N

命令n

 命令N

2、(命令 x)用保持空间替换模式空间

3、(命令 h)把模式空间的内容复制到保持空间

4、(命令 H)把模式空间内容追加到保持空间

5、(命令 g)把保持空间内容复制到模式空间

 6、(命令 G)把保持空间追加到模式空间

7、(命令 P)打印多行模式中的第一行

8、使用命令 t 进行循环

 三、其他例子,随便看看


一、sed 有两个内置的存储空间:

        模式空间:   如你所知,模式空间用于 sed 执行的正常流程中。该空间 sed 内置的一
个缓冲区,用来存放、修改从输入文件读取的内容,每处理完一行都会清空模式空间在读取下一行。


        保持空间:保持空间是另外一个缓冲区,用来存放临时数据。sed 可以在保持空间
和模式空间交换数据,但是不能在保持空间上执行普通的 sed 命令。我们已经讨论
过,每次循环读取数据过程中,模式空间的内容都会被清空,然而保持空间的内容
则保持不变,不会在循环中被删除
。(保持空间默认有换行符,文件里有几行内容就有几行换行符)


        首先 g 命令是将保持空间的内容覆盖至模式空间,保持空间默认有换行符,从保持空间取了一个换行符与保持空间的一行交换,然后依次交换。


         而 G 命令就是将保持空间的内容追加到模式空间,所以从保持空间拿一个换行符追加到模式空间里,所以整体效果就是一行和一行之间空着一行。

二、高级编辑命令:

  • h:把模式空间中的内容覆盖至保持空间中
  • H:把模式空间中的内容追加至保持空间中
  • g:把保持空间中的内容覆盖至模式空间
  • G:把保持空间中的内容追加至模式空间
  • n:读取下一行到模式空间。
  • N:将下一行添加到模式空间中。将当前读入行和用N命令添加的下一行看成“一行”。
  • d:删除模式空间中的行
  • D:删除多行模式空间中的所有行
  • x:将模式空间中的内容和保持空间中的内容互换

1、命令n与N

命令n

        读取下一行到模式空间。由于模式中有按照正常流程读取的内容,使用n命令后,模式空间中又有了一行,此时,模式中有2行内容,但是先读取的那一行不会被取代、覆盖或删除;当n命令后,还有其他命令p的时候,此时打印出的结果是n命令读取的那一行的内容。

 命令N

        将下一行添加到模式空间中。将当前读入行和用N命令添加的下一行看成“一行”。N 追加换行符\n 到当前模式空间的最后,然后从输入文件读取下一行数据,追加进来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LKsTaRt~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值