파일의 첫 번째 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 행이 출력됩니다( 를 사용하여).-n
options)를 사용하여 출력을 파이프로 접속할 수 있습니다.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
'programing' 카테고리의 다른 글
.csproj 파일 편집 방법 (0) | 2023.04.20 |
---|---|
저장된 NSUser Defaults를 쉽게 확인할 수 있습니까? (0) | 2023.04.20 |
이스케이프 키로 WPF 창을 닫는 방법 (0) | 2023.04.20 |
커밋하기 전에 'git add'를 취소하려면 어떻게 해야 합니까? (0) | 2023.04.20 |
SQL Server 브라우저를 시작할 수 없습니다. (0) | 2023.04.20 |