program story

파일의 처음 n 줄만 잡을 수 있습니까?

inputbox 2020. 7. 28. 08:31
반응형

파일의 처음 n 줄만 잡을 수 있습니까?


로그 파일이 매우 길어서 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)

grep -m6 "string" cov.txt

처음 6 줄만 검색합니다. string


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

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

이를 위해 출력을 head -10 file파이프로 연결할 수 있습니다 grep.

head -10 file | grep …

펄 사용하기 :

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

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.

Joachim Isaksson의 답변에 대한 확장 : 종종 긴 파일의 중간에서 무언가가 필요합니다 (예 : 5001 ~ 5020 행).이 경우 다음 head결합 할 수 있습니다 tail:

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

처음 5020 줄을 가져온 다음 마지막 20 줄만 표시 한 다음 모든 것을 grep으로 파이프합니다.

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


grep -A 10 <패턴>

패턴과 패턴 다음 10 줄을 잡습니다. 알려진 패턴이없는 경우 "헤드"제안을 사용하면 알려진 패턴에 대해서만 잘 작동합니다.


나는 비슷한 문제가 있었고 위의 모든 문제가 완전히 해결되지는 않습니다. 또한 일치하는 줄을 포함하는 파일 이름을 얻는 데 관심이 있습니다. 내 해결책 :

ls |parallel --gnu 'cat <(echo {}) <(head {})|grep -B1 -m1 -P "^>.*F3$"'

주의 사항 : 필자의 경우 패턴은 항상 첫 번째 줄과 일치합니다.

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

반응형