我必须更改函数声明,因此,我需要更改所有调用实例。
现有的一个:my_func( a, b, c, ***d, e***, f, g);
新一:my_func( a, b, c, **XYZ**, f, g);
表示需要将d,e更改为XYZ。这里,d和e可以表示任何东西,XYZ是固定的字符串。所以,我需要用XYZ替换第三个逗号和第五个逗号之间的字符串。
答案 0 :(得分:0)
最后,经过大量试验,我找到了答案。以下是对我有用的命令。
echo "my_func( a, b, c, d, e, f, g);" | sed 's/\(my_func(\)\(\([^,]*,\)\{3\}\)\([^,]*,[^,]*\)/\1\2 XYZ/g'
实际上,我正在使用具有多行模式的实例。
对于多行:
my_func( a, b, c,
d, e, f, g);
sed 'N; s/\(my_func(\)\(\([^,]*,\)\{3\}\)\([^,]*,[^,]*\)/\1\2 XYZ/g' file_name > output_file