Answers:
{ grep -m1 match; grep -c ''; } <file
这将与GNU grep
和一个有lseek()
能力的文件一起工作。第一grep
行将在1 -m
跳停止,第二行将-c
在输入中剩余的每一行进行测距。
没有GNU grep
:
{ sed '/match/q'; grep -c ''; } <file
当然,grep
除了您可以使用其任何/所有其他其他选项外,完全不必停止一场比赛。
grep -m1 match >/dev/null
。第二个问题是GNU- sed
它不会按规范重置其输入偏移。您必须使用-u
带有GNU的软件-并非总是如此。我可以更清楚一些,但是我的假设是GNU grep
和GNU sed
将成对出现。我认为,也grep -qm1
可以使用这种方法来缩短/dev/null
重定向的速度-但是GNU grep
确实有一些奇怪的事情,-q
而且我不记得这两者是如何一起工作的。
wc -l
比便宜一点grep -c ''
。
这是一种方法。
$ cat foo
aaa
bbb
ccc
ddd
eee
fff
$ awk '/^ddd/{a=FNR}END{print FNR-a}' foo
2
$