相关疑难解决方法(0)

如何使用 sed 或 ex 用新的文本块(代码)替换块(多行代码)?

我必须用另一个文本块替换文件中的一大块文本(shell 脚本代码)。

我对如何使用 sed 替换多行字符串印象深刻antak回答 ,多线替换Bruce Ediger回答

但是我在使用它们时遇到了一些麻烦。

  1. antak在他的回答中已经提到,1h;2,$H;$!d;g;对于大文件,不建议将整个文件 ( )流式传输到缓冲区,因为它会导致内存过载。

  2. 我知道sed可以与块功能一起使用以保持块外的文本不变。我想使用这个功能。但如果我使用,

    sed -i '/marker1/,/marker2/s/.*/new text (code)/' filename
    
    Run Code Online (Sandbox Code Playgroud)

它将为每个流重复插入新文本(代码)。因此,我必须将可视块作为一个流,使用类似于antak之前建议的内容,但用于块(不是用于整个文件)。

  1. 正如Bruce Ediger提到的,可以尝试以(点)ex开头的附加功能,但我的新文本(代码)包含以点开头的行,这可能被认为是附加语法的点。在这种情况下我该如何使用它?a.

  2. ex's dd'number of lines' 可能会删除多行,但是如果我在 /marker1/ 和 /marker2/ 之间有一个块,其中的行数不固定(变化)将被替换为新文本(代码),该怎么办它 ?

sed ex

12
推荐指数
2
解决办法
2万
查看次数

标签 统计

ex ×1

sed ×1