Bash-sed命令。如何不覆盖旧字符串?

Bash-sed命令。如何不覆盖旧字符串?,bash,sed,Bash,Sed,我正在写一个bash脚本。这个bash脚本的输出是我从模板文件创建的配置文件。我想使用sed命令,其中可以指定#########作为匹配模式,并指定AA作为替换模式。但是,当我创建一个带有新替换项的新配置文件时,BB,旧字符串AA被覆盖。我不想覆盖那个旧字符串AA;我只需要在AA后面添加BB 例如: members ###members### members aa, bb, cc, ... 我不知道是否可以使用sed命令完成此任务。这可能适合您(GNU-sed): 寻找一行包

我正在写一个bash脚本。这个bash脚本的输出是我从模板文件创建的配置文件。我想使用
sed
命令,其中可以指定
#########
作为匹配模式,并指定
AA
作为替换模式。但是,当我创建一个带有新替换项的新配置文件时,
BB
,旧字符串
AA
被覆盖。我不想覆盖那个旧字符串
AA
;我只需要在
AA
后面添加
BB

例如:

members     ###members###

members     aa, bb, cc, ...
我不知道是否可以使用
sed
命令完成此任务。

这可能适合您(GNU-sed):


寻找一行包含
########
的成员,然后将以下行附加到该行,直到这些行包含
aa
,然后将
BB
附加到
aa

您的实际输入和预期输出是什么?您完成了吗?您已经尝试了什么?我的实际输入来自模板文件,其中是行成员和替换#######成员的字符串。输出文件应该看起来像AA。然后我从我的模板文件创建新的配置文件,输出文件应该看起来像AA,BB。。。
sed '/###members###/{:a;N;/aa/s//&BB/;Ta}' file