更改"write" to "fprintf"
AND(第二个逗号)","..."strlen"...")" to ""
的正则表达式是什么?
例如,
write(fd_global,"Currently inside of main after the arguments are parsed\n", strlen("Currently inside of main after the arguments are parsed\n"));
到
fprintf(fd_global, "Currently inside of main after the arguments are parsed\n");
我知道"/write.*strlen"
会将每一行与"write"..."strlen"
匹配,但就是这样。
提前致谢!
我的回答 :%s / write(/ fprintf(/ gc |%s /,\ s * strlen((。*))/)/ gc
|两个单独的搜索和替换在同一命令中 \ s *表示写入的第二个和第三个参数之间的空白量不确定
答案 0 :(得分:1)
这就是我要做的事情:
%s/\v^write\((.*), strlen.*/fprintf(\1);/g
答案 1 :(得分:0)
这是一个建议,对于一个表达式,只有当它出现在strlen
内时才会替换write
并调用与你在此处写的相同的字符串:
%s/write(\([^,]*\),\("[^"]*"\), strlen(\2))/fprintf(\1, \2)/gc