grep を使用して、次の 2 つの文字列の間にあるすべてのテキストを検索できるかどうか疑問に思っていました。
mutablePath = CGPathCreateMutable();
...
CGPathAddPath(skinMutablePath, NULL, mutablePath);
基本的に、最初と最後の行は常に同じで、その間にたくさんのランダムなものがあります。上記の最初の行と最後の行のすべてのインスタンスの間に表示される行数を数えたいと思います。
これは可能ですか?
grep を使用して、次の 2 つの文字列の間にあるすべてのテキストを検索できるかどうか疑問に思っていました。
mutablePath = CGPathCreateMutable();
...
CGPathAddPath(skinMutablePath, NULL, mutablePath);
基本的に、最初と最後の行は常に同じで、その間にたくさんのランダムなものがあります。上記の最初の行と最後の行のすべてのインスタンスの間に表示される行数を数えたいと思います。
これは可能ですか?
別のawk
解決策は次のとおりです。
awk '/^mutablePath = CGPathCreateMutable\(\);$/ { m=1; c=0 }
/^CGPathAddPath\(skinMutablePath, NULL, mutablePath\);$/ { print c-1; m=0 }
m { c++ }' file
ではできませんがgrep
、 ではできますawk
。これは完全にテストされていませんが、動作するはずです:
awk 'BEGIN { state = 0; count = 0; }
/^mutablePath = CGPathCreateMutable();$/ { state = 1; }
/^CGPathAddPath(skinMutablePath, NULL, mutablePath);$/
{ print count; state = 0; count = 0 }
{ if (state) count++; }' FILE_OF_INTEREST
awk
それ以外にアクセスできる場合の解決策は次のgrep
とおりです。
awk '/^mutablePath = CGPathCreateMutable\(\)\;$/ {in_block=1}
in_block==1 {count++}
/^CGPathAddPath\(skinMutablePath, NULL, mutablePath\)$/ {in_block==0; count--}
END{print count}' input