有关sed模仿tac命令的代码解释,有需要的朋友可以参考下。
这条命令是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