답변:
{ grep -m1 match; grep -c ''; } <file
그것은 GNU grep
와 lseek()
유능한 파일로 작동 합니다. 첫 번째 grep
는 -m
1atch 에서 멈추고 두 번째는 -c
입력에 남아있는 모든 줄 을 잊어 버립니다.
GNU없이 grep
:
{ sed '/match/q'; grep -c ''; } <file
물론, grep
다른 옵션을 사용하거나 다른 옵션을 모두 사용할 수 있으며 한 경기에서 멈출 필요는 없습니다.
grep -m1 match >/dev/null
물론 첫 번째 경기의 출력을 떨어 뜨릴 수 있습니다 . 두 번째 문제는 GNU sed
입니다. 스펙별로 입력 오프셋을 재설정하지 않습니다. -u
항상 바람직하지는 않은 w / 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
$