使用SED忽略少数几个字符进行替换

时间:2015-08-04 12:44:44

标签: shell sed

将以下功能替换为宏时出现问题。

原帖:

function("<message>);

必填项:

`macro("message")

即。必须将函数更改为多个文件中的宏(每次不同的消息)并删除分号。我试过下面的命令。

grep -rl 'function' ./ | xargs sed -i 's/function/`macro/g' 

这解决了我的一半问题。即在消息之前替换前部。替换分号时卡住了。

注意:不得打扰其他分号。

2 个答案:

答案 0 :(得分:0)

尝试一下:

grep -rl 'function' ./ | xargs sed -i '/function/{s/function/`macro/g;s/;\s*$//}' 

答案 1 :(得分:0)

使用反向引用来执行整个更新:

grep -rl 'function' ./ | \
  xargs sed -i 's/function("<\(.*\)>);/`macro("\1")/g'