Sed递归运行,can';不要重新分配内存

Sed递归运行,can';不要重新分配内存,sed,Sed,我不熟悉sed命令。。。。。我正在尝试一些命令,但它总是在一些递归。。。。。在某些情况下,它会说“无法重新分配内存” 无限递归输出: echo -e 'hell\nnautanki\nwtf' | sed -e '1h;1!H;$!d' -e 'x;l;D' 内存重新分配问题: echo -e 'hell\nnautanki\nwtf'| sed -e '1h;1!H;$!d' -e 'x;D' 出现以下错误: sed: couldn't re-allocate memory 正如paul

我不熟悉sed命令。。。。。我正在尝试一些命令,但它总是在一些递归。。。。。在某些情况下,它会说“无法重新分配内存”

无限递归输出:

echo -e 'hell\nnautanki\nwtf' | sed -e '1h;1!H;$!d' -e 'x;l;D'
内存重新分配问题:

echo -e 'hell\nnautanki\nwtf'| sed -e '1h;1!H;$!d' -e 'x;D'
出现以下错误:

sed: couldn't re-allocate memory
正如paulsm4所指出的,您已经创建了一个无限循环,它在每次迭代中分配内存,第一个示例只是第二个示例的一个较慢版本,由于打印,它最终也会出错,
无法重新分配内存

让我们把它分解一下:

1h
1!H
$!d
将所有输入保存到保留空间,注意
d
开始下一个循环

最后两个命令
x;D
仅在到达最后一行时执行。这是运行这些程序之前的情况:

PS: wtf
HS: hell\nnautanki\nwtf
x
交换它们并
D
删除
hell\n
并重新启动循环,因为模式空间不是空的。
1!H
将在新图案空间上执行,结果:

PS: nautanki\nwtf
HS: wtf\nnautanki\nwtf
i、 e.每次迭代时内存使用量略有增加

对于两行输入,情况有点不同:

PS: nautanki
HS: hell\nnautanki
变成:

PS: nautanki
HS: nautanki
以此类推,直到无穷大

一行输入结果为:

PS: hell
HS: hell
然后:


所以就终止了。

你为什么要做一些反常的事????它相当于一个无限循环,消耗所有可用的RAM和CPU。如果你对学习“sed”很认真,请看这里:。如果你只是在玩“让我们看看我们是否可以打破操作系统”。。。不感兴趣。你想达到什么目的?我只是想看看“D”命令@Tichomodroma的工作情况……谢谢雷神……这么好的解释。。。。我只是在试验这些命令,以便更好地理解如此强大的工具。。。。
PS: 
HS: hell