d/D g/G h/H n/N p/P你真的了解它们的区别吗?
在使用sed命令进行文本编辑时,我们难免会遇到上面的这些指令,
对它们之间的关系及意义的理解就尤为重要了,下面是我对这些指令的理解,
编辑出来供初学者参考一下吧,如有不对的地方还望大家指正!
作为sed的编辑指令会逐一对pattern space中的文本进行编辑之后再将结果送到标准输出stdout。
d:将pattern space中符合匹配的行删除,然后将下一行读入pattern space后执行sed命令
D:将只删除pattern space中第一行,不会自动读入下一行文本到pattern space,而是直接执行sed命令
n:将文件中的下一行读入pattern space,并覆盖pattern space原来的内容(注:sed需要加入-n选项将输出控制权交给指令)
N:将文件中的下一行追加入pattern space中,不会覆盖patternspace原来的内容,这样可以实现一次读取多行到pattern space,这点非常有用.
p:将pattern space的内容copy一份到标准输出stdout(注:是拷贝不是搬移,说明patternspace中还存有原始的数据,注:sed 需要加入-n选项将输出控制权交给指令)
P:将pattern space的第一行内容copy一份到标准输出stdout(注:sed需要加入-n选项将输出控制权交给指令)
h:将pattern space的所有内容拷贝到hold space中,并覆盖hold space原来的内容
H:将pattern space的所有内容追加到hold space中,不会覆盖hold space原来的内容
g:将hold space的所有内容拷贝到pattern space中,并覆盖pattern space原来的内容
G:将hold space的所有内容追加到pattern space中,不会覆盖pattern space原来的内容
x:交换hold space与pattern space的内容
个中关系参考下面的草图:
在使用sed命令进行文本编辑时,我们难免会遇到上面的这些指令,
对它们之间的关系及意义的理解就尤为重要了,下面是我对这些指令的理解,
编辑出来供初学者参考一下吧,如有不对的地方还望大家指正!
作为sed的编辑指令会逐一对pattern space中的文本进行编辑之后再将结果送到标准输出stdout。
d:将pattern space中符合匹配的行删除,然后将下一行读入pattern space后执行sed命令
D:将只删除pattern space中第一行,不会自动读入下一行文本到pattern space,而是直接执行sed命令
n:将文件中的下一行读入pattern space,并覆盖pattern space原来的内容(注:sed需要加入-n选项将输出控制权交给指令)
N:将文件中的下一行追加入pattern space中,不会覆盖patternspace原来的内容,这样可以实现一次读取多行到pattern space,这点非常有用.
p:将pattern space的内容copy一份到标准输出stdout(注:是拷贝不是搬移,说明patternspace中还存有原始的数据,注:sed 需要加入-n选项将输出控制权交给指令)
P:将pattern space的第一行内容copy一份到标准输出stdout(注:sed需要加入-n选项将输出控制权交给指令)
h:将pattern space的所有内容拷贝到hold space中,并覆盖hold space原来的内容
H:将pattern space的所有内容追加到hold space中,不会覆盖hold space原来的内容
g:将hold space的所有内容拷贝到pattern space中,并覆盖pattern space原来的内容
G:将hold space的所有内容追加到pattern space中,不会覆盖pattern space原来的内容
x:交换hold space与pattern space的内容
个中关系参考下面的草图: