我想知道是否可以使用 grep 来查找以下两个字符串之间的所有文本:
mutablePath = CGPathCreateMutable();
...
CGPathAddPath(skinMutablePath, NULL, mutablePath);
基本上,第一行和最后一行总是相同的,中间会有一大堆随机的东西。我想从上面计算第一行和最后一行的所有实例之间出现的行数。
这甚至可能吗?
我想知道是否可以使用 grep 来查找以下两个字符串之间的所有文本:
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