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