[bash] 파일의 처음 n 줄만 grep 할 수 있습니까?

매우 긴 로그 파일이 있습니다. grep에게 처음 10 줄만 검색하도록 요청할 수 있습니까?



답변

파이프의 마법;

head -10 log.txt | grep <whatever>


답변

Google에서 이것을 찾은 사람들을 위해 n여러 파일 의 첫 줄 을 검색해야 했지만 일치하는 파일 이름 만 인쇄해야했습니다. 나는 사용했다

 gawk 'FNR>10 {nextfile} /pattern/ { print FILENAME ; nextfile }' filenames

FNR..nextfile10 개 번 라인 파일 처리를 중지 볼되었다. //..{}에 인쇄 파일 이름 및 이동 때마다 해당 파일을 보여줍니다 최대의 첫 경기. 다른 프로그램의 이점을 위해 파일 이름을 인용하려면

 gawk 'FNR>10 {nextfile} /pattern/ { print "\"" FILENAME "\"" ; nextfile }' filenames


답변

또는 다음 awk없이 단일 프로세스에 사용하십시오 |.

awk '/your_regexp/ && NR < 11' INPUTFILE

각 줄에서 your_regexp일치하고 레코드 (줄) 수가 11 개 미만이면 기본 작업 (입력 줄 인쇄)을 실행합니다.

또는 다음을 사용하십시오 sed.

sed -n '/your_regexp/p;10q' INPUTFILE 

정규 표현식을 확인하고 줄을 -n인쇄하고 (입력을 인쇄하지 않음, 그렇지 않으면 기본값 임) 10 번째 줄 바로 후에 종료됩니다.


답변

와 함께 프로그램을 사용하는 몇 가지 옵션이 있습니다 grep. 내 생각에 가장 간단한 방법은 다음을 사용하는 것입니다 head.

head -n10 filename | grep ...

head-n옵션을 사용하여 처음 10 줄 을 출력 한 다음 해당 출력을 grep.


답변

grep "pattern" <(head -n 10 filename)


답변

다음 줄을 사용할 수 있습니다.

head -n 10 /path/to/file | grep [...]


답변

이를 수행하기 위해 의 출력을 head -10 file파이프 할 수 있습니다 grep.

head -10 file | grep 

Perl 사용 :

perl -ne 'last if $. > 10; print if /pattern/' file