2

好吧,我知道 sed 不支持非贪婪搜索,但是可能有一个聪明的正则表达式来替换以下内容

VARIABLE="
text1
text2
text3
"

VARIABLE="
Atext1
Atext2
Atext3
"

现在我只能替换第一场比赛。

4

3 回答 3

2

在这种情况下,我认为 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
于 2013-07-06T23:50:55.753 回答
1

假设文本不包含双引号:

sed '/"/!s/^/A/' input
于 2013-07-06T23:54:46.487 回答
0

我假设您要替换变量的内容:

VARIABLE=$(sed 's/./A&/' <<< "$VARIABLE")
于 2013-07-07T00:42:17.667 回答