我正在尝试匹配bla = 0.05
并将数字替换为文件中的1234。预期输出为bla = 1234
我试过的代码:
sed -i '' "s/\(bla\)\(.*\)\([-+]?[0-9]*\.?[0-9]*\)/#\1\21234/g" foo
此外,为什么我有时需要''
,有时不会拨打sed
?
答案 0 :(得分:1)
$ echo 'bla = 0.05' > foo
$ cat foo
bla = 0.05
$ sed 's/\(bla[^0-9.+-]*\)\([-+]\?[0-9]*\.\?[0-9]*\)/\11234/g' foo
bla = 1234
如果扩展正则表达式选项可用,则-E
或-r
$ sed -E 's/(bla[^0-9.+-]*)([-+]?[0-9]*\.?[0-9]*)/\11234/g' foo
bla = 1234
有关在不同-i
版本
sed
标记的要求,请参阅sed in-place flag