关于sed工作原理的一个问题
如:
cat test 输出如下:
1
2
3
4
5
6
7
为什么sed 'H;x' test 会得到如下这样的结果:
1
1
2
2
3
3
4
4
5
5
6
6
7
H在追加数据时是如何操作的?在追加数据到hold spance时,之前的hold spance是空的吗?
------解决方案--------------------
只有第一次H之前是空的
你可以用sedsed看看执行过程
./sedsed -d 'H;x' urfile
http://sedsed.sourceforge.net/
------解决方案--------------------默认的hold space 为 $
第一次执行H之后,$变成\n1$ # \n为自动添加
x交换hold space和pattern space的内容,打印出
\n
1
第二次执行H之后,\n1$变成1\n2$ ,执行x之后,打印出
1\n
2
.
.
.
依次类推