正则表达式命令仅在函数定义中删除逗号之后的新行。
ChainCtrlUpdateHandler defaultUpdateHandlers[kVideoRouteNodeMax] =
{
ChainCtrlUpdateMonitorRoute,
ChainCtrlUpdateVideoOutRoute,
};
eErrorT ChainCtrlInitChains(ChainCtrlT* pChainCtrl,
char* name,
int instance,
void* pOwner,
)
{
...
}
OUTPUT DESIRED
ChainCtrlUpdateHandler defaultUpdateHandlers[kVideoRouteNodeMax] =
{
ChainCtrlUpdateMonitorRoute,
ChainCtrlUpdateVideoOutRoute,
};
eErrorT ChainCtrlInitChains(ChainCtrlT* pChainCtrl,char* name,int instance,void* pOwner)
{
....
}
请注意 .c文件中有许多函数定义
我的代码
open(my $FILE, "< chaincontroller.c") or die $!;
my @arr = <$FILE>;
foreach (@arr){
$_ =~ s/,\n/,/;
print $_;
}
它删除',\ n'到处都是,但我只需要为函数定义做它。
答案 0 :(得分:2)
尝试这样做:
perl -00 -ple 's/,\s*\n/,/gms if /\(/ .. /\)/' filename.txt
使用脚本:
perl -MO=Deparse -00 -ple 's/,\s*\n/,/gms if /\(/ .. /\)/' filename.txt
代码:
BEGIN { $/ = ""; $\ = "\n\n"; }
LINE: while (defined($_ = <ARGV>)) {
chomp $_;
s/,\s*\n/,/gms if /\(/ .. /\)/;
}
continue {
die "-p destination: $!\n" unless print $_;
}