ablog

不器用で落着きのない技術者のメモ

2つ以上の空白文字は1つにするがシングルクオートで囲まれたリテラルは無視する Perl ワンライナー

@yoheia つ s/\G(('[^']*'[^']*?)*[^']*?)[ ]+/$1 /g

Twitter. It's what's happening.

Perl ワンライナーで試してみると、

% cat foo.c
  select '  ','a   bc' from   emp  where ename='a    ';
% perl -pe 's/\G((\x27[^\x27]*\x27[^\x27]*?)*[^\x27]*?)[ ]+/$1 /g' foo.c
 select '  ','a   bc' from emp where ename='a    ';

おおー、でけた。


@chirokings さん、あざっす!