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