我想转换如下:
bool foo(int a, unsigned short b)
{
return pImpl->foo(int a, unsigned short b);
}
为:
bool foo(int a, unsigned short b)
{
return pImpl->foo(a, b);
}
换句话说,我需要删除不是函数定义的行上的类型定义。
我正在使用Linux。
以下内容删除了两行中的类型:
perl -p -e 's/(?<=[,(])\s*?(\w+ )*.*?(\w*)(?=[,)])/ $2/g;' fileName.cpp
如何只更换以“return”开头的行,并在同一行上进行多项更改?
答案 0 :(得分:8)
添加if
声明:
perl -p -e 's/regex/replacement/g if /^\s*return/;' fileName.cpp
或者,您可以利用传递给perl -p的字符串是循环体:
perl -p -e 'next unless /^\s*return/; s/add/replacement/g;' filename.cpp
答案 1 :(得分:0)
你可以放一些东西来匹配 - &gt;在你的正则表达式中所以它与函数定义不匹配。更好的方法是编写一个逐行解析并拒绝没有 - >的行的脚本。在进行替换之前。