3
我的sed脚本是这样的:sed的:H和d行为
# script.sed
1,3H
1,3g
3D
当我运行它,我得到如下:
$ seq 5 | sed -f script.sed
1
1
2
4
5
然而,这似乎是我错了。在第3行中,一旦执行了d命令,图案空间具有
1
2
3
当重新启动周期,H应该设置在保持空间:
<empty_line>
1
2
3
1
2
3
然后,克应设置图案空间到相同的内容。 D将删除第一条(空的)行。每次循环重新启动时,保持空间将有效地增加一倍。因此,这应该导致无限循环。
我错过了什么?
在第3行中的'D'命令的重复删除高达并且包括在模式空间的每一行,直到没有行被保留。该命令基本上停留在第3行,直到所有内容都被删除。 – potong
@potong不正确。如果我在它之前包含'=',我可以看到多行打印行号(3)。所以,它从顶部开始。 – euphoria83
但是第3行永远不会被打印,因为当执行'D'命令时,sed循环的正常打印部分永远不会到达。尝试插入'3p'命令或'3P'。 – potong