g: 将hold space中的内容拷贝到pattern space中,原来pattern space里的内容清除
G: 将hold space中的内容append到pattern spacen后
h: 将pattern space中的内容拷贝到hold space中,原来的hold space里的内容被清除
H: 将pattern space中的内容append到hold spacen后
x: 交换pattern space和hold space的内容
2,$G:从第二行到最后一行执行G命令
h:执行h命令
$!d:删除除了最后一行的所有行
将1-line放入模式空间;此时模式空间还是1-line;
直接执行h命令,此时暂存空间是1-line;
执行d命令,删除了模式空间仅有的一行数据,删除之后,模式空间是空的
将2-line放入模式空间
执行G命令,将暂存空间的1-line添加到模式空间2-line的后面,此时模式空间是2-linen1-line;
执行h命令,此时暂存空间的内容是2-linen1-line;
执行d命令,模式空间被清空
将3-line放入模式空间,
执行G命令,将暂存空间的2-linen1-line添加到模式空间3-line的后面,此时模式空间是3-linen2-linen1-line;
执行h命令,此时暂存空间的内容是3-linen2-linen1-line;
不执行$!d;
当然,命令:sed ‘1!G;h;$!d’ tmp 也能有这个效果。