Hé bien perso je préfère la commande awk, que je trouve plus lisible. Pour preuve:

awk '{if ($1 ~ /#define/ && $2 ~ /bidule.h/) printf "// %s\n", $0; else print $0}' main.cpp > main.cpp.tmp
mv...