这条命令很早很早就有了,是sed命令的模式空间和保存空间的典型应用。但是有很多人不知道该怎么解释这条命令。所以在这里解释一下。
执行代码sed '1!G;$!h;$!d'
- [root@station1 ~]# cat data
- a
- b
- c
- [root@station1 ~]# sed '1!G;$!h;$!d' data
- c
- b
- a
- [root@station1 ~]#
举例文本
a
b
c
读取第一行a
1!G这一条不执行;
$!h 把a这一行覆盖保存空间,就是说保存空间只有一行:a;
然后d,将模式空间的a删除,所以什么也不输出;
然后读取第二行b
执行G,将保存空间的a,追加到当前模式空间,当前模式空间:
b
a
然后执行h,将当前模式空间覆盖保存空间,这是保存空间里的内容:
b
a
然后执行$!d,删除当前模式空间,也就是什么都不输出
读取最后一行c
执行G,将保存空间内容追加当前模式空间,也就是现在模式空间内容:
c
b
a
最后一行不执行$!h;$!d,所以输出:
c
b
a
阅读(1557) | 评论(0) | 转发(0) |