我必须用另一个文本块替换文件中的大文本块(shell脚本代码)。
我如何使用sed替换多行字符串给我留下了深刻的印象?antak回答 ,多行替换Bruce Ediger回答
但是我在使用它们时遇到了一些麻烦。
antak在他的回答中已经提到过,
1h;2,$H;$!d;g;
不建议将大文件()流到整个缓冲区,因为大文件会导致内存过载。我知道
sed
可以与块功能一起使用,以保持块外的文本不变。我要使用此功能。但是如果我用sed -i '/marker1/,/marker2/s/.*/new text (code)/' filename
它将为每个流重复插入新文本(代码)。因此,我必须将可视块作为一个流,使用类似于antak先前所建议的内容,但要针对该块(而不是针对整个文件)。
正如Bruce Ediger所提到的,可以尝试使用以(dot)
ex
开头的附加功能,但是我的新文本(code)包含以dot开头的行,可以将其视为附加语法的点。在这种情况下如何使用?a
.
ex
'的dd
'行数'可能会删除多行,但是如果我在/ marker1 /和/ marker2 /之间有一个块,行数不固定(可变)将被新文本(代码)替换,该怎么办呢?
sed
或运行ex
命令的主脚本)。
r
如果替换文本的源位于文件中,我将使用read file命令从另一个文件复制文本。