3

grepを使用して、次で始まるすべてのテキストをハイライトすることは可能ですか?

mutablePath = CGPathCreateMutable();

で終わる:

CGPathAddPath(skinMutablePath, NULL, mutablePath);

これらの2つのフレーズの間に任意の量のテキストがありますか?

注:BBEditを使用しているため、grepを使用する必要があります。

4

3 に答える 3

3

使用する必要がありますGNU grep

grep -oPz 'mutablePath = CGPathCreateMutable\(\);.*?(\n.*?)*.*?CGPathAddPath\(skinMutablePath, NULL, mutablePath\);' file

がない場合は、同じことを達成するためにGNU grep使用できます。pcregrep

pcregrep -M 'mutablePath = CGPathCreateMutable\(\);.*(\n|.)*CGPathAddPath\(skinMutablePath, NULL, mutablePath\);' file
于 2012-11-30T03:53:25.280 に答える
0

代わりに、次のようにsedを使用できます。

sed -n '/mutablePath = CGPathCreateMutable();/,/CGPathAddPath(skinMutablePath, NULL, mutablePath);/p' infile

編集:

-Pbrepでgrepのフラグがサポートされているかどうかわからない。もしそうなら、あなたはこれを使うことができます:

grep -oP 'mutablePath = CGPathCreateMutable();\X*CGPathAddPath(skinMutablePath, NULL, mutablePath);/' infile

grepのmanページによると:

-P、-perl-regexpPATTERNをPerl正規表現として解釈します。

于 2012-11-30T03:29:29.920 に答える
0

これらの間およびこれらを含む行を印刷する場合は、次を使用できます。

perl -ne '/start line/ .. /end line/ and print'
于 2012-11-30T03:31:18.260 に答える