我已经尝试了几十种不同的sed选项,但还没有找到可行的组合。我想转:
test(3) = var
other(8) = var
test(13) = var
...
成:
test(3) = newvar
other(8) = var
test(13) = newvar
...
我遇到的问题是括号中的变化值。我想在之后编辑,以防止必须捕获并分配它。我尝试了以下方法,认为我可以在括号内使用.*
作为通配符,但我似乎无法让它工作。
sed -n "s/\(test(.*\)\s+\w+/\1) = newstuff/g" file.txt
答案 0 :(得分:3)
您可以使用此sed命令:
sed -i.bak 's/^\([^=]* *= *\).*$/\1newvar/' file
这将匹配RHS字符串(从开始到找到=
)并由newvar
替换
如果要使用shell变量,请使用双引号:
NEWVAR="something"
sed -i.bak "s/^\([^=]* *= *\).*$/\1$NEWVAR/" file
更新:仅更改以test
开头的行:
sed -i.bak "s/^\( *test *[^=]* *= *\).*$/\1$NEWVAR/" file