programing

파일의 첫 번째 n줄만 grep 할 수 있나요?

testmans 2023. 4. 20. 20:08
반응형

파일의 첫 번째 n줄만 grep 할 수 있나요?

로그 파일이 매우 긴데, 처음 10줄만 검색하도록 grep에게 부탁할 수 있을까요?

파이프의 마법

head -10 log.txt | grep <whatever>

구글에서 이것을 찾는 사람들을 위해, 나는 첫번째 검색의 필요가 있었다.n일치하는 파일 이름만 인쇄합니다.나는 사용했다

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

FNR..nextfile는, 10 행이 확인되면, 파일의 처리를 정지합니다.//..{}는, 소정의 파일내의 최초의 일치가 표시될 때마다, 파일명을 인쇄해, 다음의 순서로 진행됩니다.다른 프로그램을 위해 파일 이름을 인용하려면

 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 

regexp를 체크하고 행을 인쇄합니다(-n입력(기본값)을 인쇄하지 않음을 의미하며, 10번째 줄 직후에 종료됩니다.

프로그램을 사용하는 방법은 몇 가지 옵션이 있습니다.grep제 생각에 가장 간단한 방법은head:

head -n10 filename | grep ...

head첫 번째 10 행이 출력됩니다( 를 사용하여).-noptions)를 사용하여 출력을 파이프로 접속할 수 있습니다.grep.

grep "pattern" <(head -n 10 filename)
head -10 log.txt | grep -A 2 -B 2 pattern_to_search

-A 2: 패턴 앞에 두 줄을 인쇄합니다.

-B 2: 패턴 뒤에 두 줄을 인쇄합니다.

head -10 log.txt # read the first 10 lines of the file.

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

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

요아힘 이자크손의 답변의 연장선:긴 파일의 중간에서 무언가를 필요로 하는 경우가 많습니다.예를 들어 5001 행부터5020 행까지입니다.이 경우 조합할 수 있습니다.head와 함께tail:

head -5020 file.txt | tail -20 | grep x

첫 번째 5020 행이 취득되고 그 중 마지막 20 행만 표시되며 모든 것이 GREP로 파이핑됩니다.

(편집: 예제 번호의 펜스 포스트 오류, GREP에 파이프 추가)

grep - A 10 <패턴>

이것은 패턴과 패턴 뒤의 10줄을 잡기 위한 것입니다.이 방법은 알려진 패턴에 대해서만 잘 작동합니다. 알려진 패턴이 없는 경우 "헤드" 제안을 사용하십시오.

grep -m6 "string" cov.txt

첫 번째 6행만 검색합니다.string

언급URL : https://stackoverflow.com/questions/8762274/can-i-grep-only-the-first-n-lines-of-a-file

반응형