1

正则表达式命令仅在函数定义中删除逗号后的新行。

ChainCtrlUpdateHandler defaultUpdateHandlers[kVideoRouteNodeMax] =
{

    ChainCtrlUpdateMonitorRoute,
    ChainCtrlUpdateVideoOutRoute,
};

eErrorT ChainCtrlInitChains(ChainCtrlT* pChainCtrl,
    char* name,
    int instance,
    void* pOwner,
    )
 {
   ...
 }

所需输出

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' 但我只需要为函数定义完成它。

4

1 回答 1

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 $_;
}
于 2013-10-08T21:55:04.713 回答