私は複数行の一致のために拡張機能を使用 grep
していperl
ますが、すべての一致の行番号は最初の複数行の一致の行数に依存することがわかりました!
関数startを見つけるためのgrep
正規表現:c
grep -iPn '^[^\S\n]*?\w+\s+\w+?\s*\([\w-0-9,/* \s]*\)\s*\{$'
私は例でよりよく説明することができます:
これらの2つの関数がソースファイルに存在するとします
int f1(int a) {
int
f2 (int b )
{
この場合、grepは正規表現と正常に一致し、stdoutに出力される行番号はソースファイルの行番号と同じです。
この問題は、複数行の関数が最初に来るときに発生します。これにより、行番号の出力が変更され、しばらくの間ファイルを調べた後、結論に達しました。複数行の関数は一致しますが、grepによって単一の行として読み取られるため、関数全体に単一の行番号が割り当てられます。関数に続く次の行は、行数に応じて行番号が短くなります。を占めます。
私のファイルには多数の複数行C
関数があり、それぞれの行番号が大きくずれています。
これを修正する方法はありますか?