使用sed替换下面给出的模式

时间:2016-07-25 10:52:16

标签: regex sed

我必须更改函数声明,因此,我需要更改所有调用实例。

现有的一个:my_func( a, b, c, ***d, e***, f, g);
新一:my_func( a, b, c, **XYZ**, f, g);

表示需要将d,e更改为XYZ。这里,d和e可以表示任何东西,XYZ是固定的字符串。所以,我需要用XYZ替换第三个逗号和第五个逗号之间的字符串。

1 个答案:

答案 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