1、sed参数说明
l list pattern space的东西是什么
h 把hold space里的东西清掉,把pattern space的东西copy给hold space
H 把pattern space的东西加在hold space东西后面
g 把pattern space里的东西清掉,把hold space东西拿回给pattern space
G 把hold space的东西加在pattern space东西后面
p 印出pattern space的东西
x 交换(exchange)pattern space与hold space
-n参数:不让每次sed处理一行,就默认输出pattern的内容,而是最后才输出。(注意:每次sed处理新行都会覆盖掉pattern的内容。)
2、举例说明
如下示例为将文本数据倒序输出。
[root@VM-0-36-centos ~]# cat file
1
2
3
[root@VM-0-36-centos ~]# sed -n ‘1!G;h;$p’ file
3
2
1
其中“1!”由于刚开始hold空间并没有数据要追加过来,所以跳过第一次“G”追加。
3、总结
h H Copy/append pattern space to hold space.
g G Copy/append hold space to pattern space.
可以将pattern space理解为加工车间,hold space理解为仓库,多行数据要一次性处理的话,就要先一行一行的拆分进pattern space,再放入hold space中组合成原数据,再送入pattern space中处理。
所以这里涉及到的“h H”可以简单理解成hold,即将已加工好的数据存储起来,“g G”可以理解成get,将仓库的数据拿过来到pattern空间中继续加工。
第一步就是把仓库数据get到pattern空间处理,第二部就是把处理好的数据hold到hold空间存储。第三步则将pattrn空间的数据输出。
加上自定义的各种变化,即可完成各种类型的数据处理。