条件付きパターンマッチング

条件付きパターンマッチング

文字列を含むファイルを探したいのですが、その文字列をコメントセクションに含めることはできません。例: 一致させる文字列 = 'Map'

  1. /*アワーマップ*/
  2. //Map aoeuoeu
  3. ウオ=地図+2

grepは3とのみ一致する必要があります。

私は試した:

grep -r --include=*.mc "^.*[^\/][^\*].*\sMap"

編集する 私が投稿したケースは参考です。文字列を意味します。地図cppコードで使用

ベストアンサー1

この記事を参考資料として、

https://stackoverflow.com/questions/2394017/remove-comments-from-cc-code

プリプロセッサを使用してソースファイルからコメントを削除し、それをgrepにパイプして目的のパターンを見つけます。

sh-4.3$ cat source.c                                                                                                                                                                                                                                   
/*                                                                                                                                                                                                                                                     
 * aoeuaeu Map                                                                                                                                                                                                                                         
 */                                                                                                                                                                                                                                                    

// Map aoeuoeu                                                                                                                                                                                                                                         

uoeu = Map + 2                                                                                                                                                                                                                                         
aeiou Int; // Map                                                                                                                                                                                                                                      

sh-4.3$ gcc -fpreprocessed -dD -E source.c | grep -v ^# | grep Map                                                                                                                                                                                     
uoeu = Map + 2                                                                                                                                                                                                                                         

sh-4.3$ 

おそらくそれは必要ではないでしょうgrep -v ^#。プリプロセッサを介してファイルを実行したときに出力されるコメント行を除外するためにここに含めました。

おすすめ記事