1

コードスニペット int tc のようなものがあります

val =  (val1 << 8) | (val >> 8 );
val =  (val2 << 16) | (val >> 8 );
val =  (val3 << 32) | (val >> 8 );
val =  (val << 8);

次のようにgrepすると出力が得られます grep -nhE "(<<.*|).*(>>)" t.c

1:val =  (val1 << 8) | (val >> 8 );
2:val =  (val2 << 16) | (val >> 8 );
3:val =  (val3 << 32) | (val >> 8 );

しかし、私のように cppcheck で検索する ./cppcheck --rule="(<<.*|).*(>>)" t.cと、出力が得られます

[../test/t.c:1]: (style) found ' val = ( val1 << 8 ) | ( val >> 8 ) ; val = ( val2 << 16 ) | ( val >> 8 ) ; val = ( val3 << 32 ) | ( val >>'

つまり、最初の一致から一致する行全体が一緒に表示されます。grep コマンドのように結果が必要です。

助けてください

4

1 に答える 1

0

次のコマンドを試してください (エスケープ|):

cppcheck --rule="<<.*?\|.*?>>" t.c

出力は、grep の出力とまったく同じではありません。

于 2013-07-10T10:43:25.947 に答える