私は2つのgrepコマンドを使用してそれを行うには、管理は/usr/include/stdio.hgrepを使用して複数の行ブロックコメントの数を調べる方法は?
で複数行にまたがるブロックコメントの数を見つけようとしている:これは指定でき
egrep '/\*' /usr/include/stdio.h | egrep -cv '\*/'
1つの正規表現だけを使用して、よりエレガントな方法で行われますか?
私は2つのgrepコマンドを使用してそれを行うには、管理は/usr/include/stdio.hgrepを使用して複数の行ブロックコメントの数を調べる方法は?
で複数行にまたがるブロックコメントの数を見つけようとしている:これは指定でき
egrep '/\*' /usr/include/stdio.h | egrep -cv '\*/'
1つの正規表現だけを使用して、よりエレガントな方法で行われますか?
PCREがご使用のバージョンgrep
(たとえばGNU grep)でサポートされている場合、最も簡単な方法は否定的な先読みです。
grep -P '/\*(?!.*\*/)' filename
一般的に否定的な先読みを行うことは、拡張されたREだけでは困難です。次のようになりますが、単一行のコメントが**/
で終わる場合は機能しません。
grep -E '/\*[^*]*((\*($|[^/]))?[^*]*)*$'
あなたはPCREサポート付きの 'grep'を持っている場合は、* /' 'が続いていないこと、' '/ *と一致するように負の先読みを使用することができます。 – Barmar
しかし、それは拡張正規表現だけで行うことができますか? – yabk
拡張REで否定的な先読みを実行するのは難しいです。 – Barmar