栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

sed中的“保留空间”和“模式空间”的概念

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

sed中的“保留空间”和“模式空间”的概念

当sed逐行读取文件时,当前已读取的行将插入到 模式
缓冲区(模式空间)中。模式缓冲区类似于临时缓冲区,即存储当前信息的暂存器。当您告诉sed打印时,它将打印图案缓冲区。

保持缓冲区/保持空间就像是一个长期存储,因此您可以捕获某些东西,将其存储起来,然后在sed处理另一行时再使用它。您不直接处理保留空间,相反,如果您想对其进行处理,则需要将其复制或追加到模式空间。例如,print命令

p
仅打印图案空间。同样,
s
在模式空间上操作。

这是一个例子:

sed -n '1!G;h;$p'

(-n选项禁止自动打印行)

这里有三个命令:

1!G
h
$p
1!G
有一个地址,
1
(第一行),但
!
该命令将被执行到处手段 ,但
在第一行上。
$p
另一方面,只会在最后一行执行。那么会发生什么:

  1. 读取第一行并将其自动插入模式空间
  2. 在第一行,不执行第一条命令;
    h
    将第一行复制到 保留 空间。
  3. 现在第二行替换了模式空间中的所有内容
  4. 在第二行,首先我们执行
    G
    ,将保持缓冲区的内容追加到模式缓冲区,并用换行符将其分隔。模式空间现在包含第二行,换行符和第一行。
  5. 然后,
    h
    命令将模式缓冲区的并置内容插入到保留空间中,该空间现在保留两行和一行的反向行。
  6. 我们继续进行第三行-转到上面的点(3)。

最后,在读取最后一行并将保持空间(以相反的顺序包含所有先前的行)添加到图案空间之后,用来打印图案空间

p
。您已经猜到了,上面的
tac
命令完全可以执行该命令-
反向打印文件。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/383280.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号