我有一个充满 C++ 代码的文件,它是一堆返回数字的小函数。如果数字大于2,我正在尝试用数字加一替换每个数字。所以,
int blah() { return 5; }
会成为
int blah() { return 6; }
但
int blah() { return 1; }
将保持不变。
这是怎么做到的?
我有一个充满 C++ 代码的文件,它是一堆返回数字的小函数。如果数字大于2,我正在尝试用数字加一替换每个数字。所以,
int blah() { return 5; }
会成为
int blah() { return 6; }
但
int blah() { return 1; }
将保持不变。
这是怎么做到的?
有点难看,但应该可以:
s/\{\s*return\s+(\d+)\s*;\s*\}/$1 > 2 ? "{ return " . ($1 + 1) . "; }" : $&/ge;
用 核对号码[3-9]
。例子:
/int\s*blah\(\)\s*\{\s*return\s*([3-9]);\s*}/g
编辑:
要增加 中的值$1
,您将需要标志e
并连接字符串:
$_ = 'int blah() { return 5; }';
s/int\s*blah\(\)\s*\{\s*return\s*([3-9]);\s*}/'int blah() { return '.$1+1 . '; }'/eg;
print;
perl -e 'use Tie::File;tie @array,'Tie::File',$ARGV[0] || die;s|(return\s+)(\d+)(.*)|$2>1?$1.($2+1).$3:$1.$2.$3|e for (@array);untie @array;' FILENAME