提取并替换 shell 脚本中的令牌

Kar*_*ins 4 regex shell sed token

在源代码文件中,我需要更改所有实例,例如

foo_bar('param')
Run Code Online (Sandbox Code Playgroud)

成为

booch['param']=$param
Run Code Online (Sandbox Code Playgroud)

这里,param是一个令牌,它可以变化。它可以是任何东西。

即,在一个文件中,

一切

foo_bar('xxx')
Run Code Online (Sandbox Code Playgroud)

必须成为

booch['xxx']=$xxx
Run Code Online (Sandbox Code Playgroud)

和,

一切

foo_bar('yyy')
Run Code Online (Sandbox Code Playgroud)

必须成为

booch['yyy']=$yyy
Run Code Online (Sandbox Code Playgroud)

等等。我试图通过编写 shell 脚本并使用 sed 来做到这一点。但不知道该怎么做。希望我的询问可以理解。谢谢

Sie*_*geX 6

sed "s/foo_bar('\([^']*\)')/booch['\1']=$\1/g" infile > outfile
Run Code Online (Sandbox Code Playgroud)

测试

$ echo "foo_bar('xxx')" | sed "s/foo_bar('\(.*\)')/booch['\1']=$\1/"
booch['xxx']=$xxx
Run Code Online (Sandbox Code Playgroud)