Bash 命令替换两个字符串之间的文本

问题描述 投票:0回答:1

我正在尝试替换文件内两个已知标签之间的多行文本块。它具有以下结构:

#STARTTAG
some text with numbers 123
and dots . that I want 
to replace .
#ENDTAG

我一直在根据我在网上看到的内容尝试不同的方法,包括 sed、awk、perl,但我似乎无法使其工作。

例如,这就是我一直在尝试实现的:

sed -i '' 's/STARTTAG.*ENDTAG/alternative text/g' somefile

但它没有任何作用。我尝试向每个字符串(即标签和替换文本)添加 ' 和 ",但它什么也没做。我不确定我做错了什么。请注意,我希望文本和替代文本都被替换是多行的。

谢谢你

bash unix text
1个回答
0
投票

我会做什么:

sed '/STARTTAG/,/ENDTAG/{s/.*/alternative text/g;q}' file

产量:

alternative text
© www.soinside.com 2019 - 2024. All rights reserved.