好吧,我知道 sed 不支持非贪婪搜索,但是可能有一个聪明的正则表达式来替换以下内容
VARIABLE="
text1
text2
text3
"
和
VARIABLE="
Atext1
Atext2
Atext3
"
现在我只能替换第一场比赛。
在这种情况下,我认为 sed 不支持非贪婪正则表达式并不重要,如下所示的非包含范围替换就足够了。我使用 GNU sed 进行了测试,请参见下面的结果
sed '/^VAR.*="/,/^"/ {/"/! s/^/A/}' testfile.txt
VARIABLE="
Atext1
Atext2
Atext3
"
test
data
test
p
VARIABLE="
Atext1
Atext2
Atext3
"
test
data
编辑:或者正如Potong指出的那样,这可以简化为更惯用的形式
sed '/^VAR.*="/,/^"/ {//! s/^/A/}' testfile.txt
假设文本不包含双引号:
sed '/"/!s/^/A/' input
我假设您要替换变量的内容:
VARIABLE=$(sed 's/./A&/' <<< "$VARIABLE")