我对sed中的两个概念感到困惑:保持空间和模式空间。有人可以帮忙解释一下吗?
这是手册的摘要:
h H Copy/append pattern space to hold space. g G Copy/append hold space to pattern space. n N Read/append the next line of input into the pattern space.
这六个命令确实使我感到困惑。
当sed逐行读取文件时,当前已读取的行将插入到 模式
缓冲区(模式空间)中。模式缓冲区类似于临时缓冲区,即存储当前信息的暂存器。当您告诉sed打印时,它将打印图案缓冲区。
保持缓冲区/保持空间就像是一个长期存储,因此您可以捕获某些东西,将其存储起来,然后在sed处理另一行时再使用它。您不直接处理保留空间,相反,如果您想对其进行处理,则需要将其复制或追加到模式空间。例如,print命令p
仅打印图案空间。同样,s
在模式空间上操作。
这是一个例子:
sed -n '1!G;h;$p'
(-n选项禁止自动打印行)
这里有三个命令:1!G
,h
和$p
。1!G
有一个地址,1
(第一行),但!
该命令将被执行到处手段 ,但
在第一行上。$p
另一方面,只会在最后一行执行。那么会发生什么:
h
将第一行复制到 保留 空间。G
,将保持缓冲区的内容追加到模式缓冲区,并用换行符将其分隔。模式空间现在包含第二行,换行符和第一行。h
命令将模式缓冲区的并置内容插入到保留空间中,该空间现在保留两行和一行的反向行。最后,在读取最后一行并将保持空间(以相反的顺序包含所有先前的行)添加到图案空间之后,用来打印图案空间p
。您已经猜到了,上面的tac
命令完全可以执行该命令-
反向打印文件。
有没有办法让HTML净化器保留在呈现的HTML中通常会看到的隐式空间? 例如,在以下情况下,您通常希望和之间有一个空格: 例1 例2
在这一节中,我们将探索JavaScript中关于命名空间的模式。命名空间可被看作位于一个唯一标识符下的代码单元的逻辑组合。标识符可以被很多命名空间引用,每一个命名空间本身可以包含一个分支的嵌套命名空间(或子命名空间)。 在应用开发过程中,出于很多原因,我们都要使用命名空间。在JavaScript中,它们帮助我们避免在全局空间中于其他对象或者变量出现冲突。它们对于在代码库中组织功能块也非常有用,这样
本文向大家介绍欧式空间与马氏空间?相关面试题,主要包含被问及欧式空间与马氏空间?时的应答技巧和注意事项,需要的朋友参考一下 欧式空间具有平移不变性、旋转不变性,而马氏空间还具有尺度缩放不变性和不受量纲影响的特性
我正在使用Java将JSON转换为Avro,并使用Google DataFlow将其存储到GCS。Avro模式是使用SchemaBuilder在运行时创建的。 我在模式中定义的字段之一是可选的LONG字段,它是这样定义的: 现在,当我使用上面的模式创建GenericRecord时,并且“key1”未设置,当将结果GenericRecord放在我的DoFn的上下文中时:我得到以下错误: 异常在线程"
关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。 这篇文章将概括介绍在TypeScript里使用模块与命名空间来组织代码的方法。 我们也会谈及
关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。 介绍 这篇文章将概括介绍在TypeScript里使用模块与命名空间来组织代码的方法。 我们也