etc./StackOverFlow

grep 파일이지만 여러 줄을 표시합니까?

청렴결백한 만능 재주꾼 2021. 10. 6. 03:01
반응형

질문자 :Mark Harrison


grep 하고 싶지만 앞의 다섯 줄과 다음 다섯 줄과 일치하는 줄도 표시합니다. 어떻게 하면 될까요?



BSD 또는 GNU grep -B num 을 사용하여 일치 전 행 수를 설정하고 -A num 을 사용하여 일치 후 행 수를 설정할 수 있습니다.

 grep -B 3 -A 2 foo README.txt

전후에 동일한 수의 행을 원하면 -C num 사용할 수 있습니다.

 grep -C 3 foo README.txt

이렇게 하면 앞 3줄과 뒤 3줄이 표시됩니다.


Pat Notz

-A-B-C n ( n 줄의 컨텍스트) 또는 -n ( n 줄의 컨텍스트의 경우... n이 1에서 9까지인 한)과 같이 작동합니다.


Stu

ack 는 grep과 유사한 인수로 작동하고 -C 허용합니다. 그러나 일반적으로 코드를 통해 검색하는 것이 더 좋습니다.


elmarco

grep astring myfile -A 5 -B 5

"astring"에 대해 "myfile"을 grep하고 각 일치 전후에 5줄을 표시합니다.


dbr

나는 일반적으로 사용

 grep searchstring file -C n # n for number of lines of context up and down

grep과 같은 많은 도구에는 정말 훌륭한 man 파일도 있습니다. 나는 grep의 매뉴얼 페이지 로 할 수 있는 일이 너무 많기 때문에 grep의 매뉴얼 페이지를 많이 참조하고 있습니다.

 man grep

많은 GNU 도구에는 매뉴얼 페이지 외에 더 유용한 정보 가 있는 정보 페이지도 있습니다.

 info grep

Sam Merrell

그렙 사용

 $ grep --help | grep -i context Context control: -B, --before-context=NUM print NUM lines of leading context -A, --after-context=NUM print NUM lines of trailing context -C, --context=NUM print NUM lines of output context -NUM same as --context=NUM

Chiel ten Brinke

ripgrep

성능에 관심이 있다면 grep 과 유사한 구문을 가진 ripgrep

 rg -C5 "pattern" .

-C , --context NUM - 각 일치 전후에 NUM 행을 표시합니다.

-A / --after-context-B / --before-context 와 같은 매개변수도 있습니다.

이 도구는 Rust의 정규식 엔진 위에 구축되어 대용량 데이터에서 매우 효율적입니다.


kenorb

에 "17655"의 검색 /some/file.txt 전 (사용 후 10 개 라인 콘텍스트를 나타내는 Awk ), 행 번호 앞에 출력 콜론. grep -[ACB] 옵션을 지원하지 않는 경우 Solaris에서 이것을 사용하십시오.

 awk ' /17655/ { for (i = (b + 1) % 10; i != b; i = (i + 1) % 10) { print before[i] } print (NR ":" ($0)) a = 10 } a-- > 0 { print (NR ":" ($0)) } { before[b] = (NR ":" ($0)) b = (b + 1) % 10 }' /some/file.txt;

Malcolm Boekhoff

다음은 awk 의 @Ygor 솔루션 입니다.

 awk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r[(NR-c+1)%b];print;c=a}b{r[NR%b]=$0}' b=3 a=3 s="pattern" myfile

주 : 교체 와 a b 전후 라인의 수와 변수를.

-A , -B-C 매개변수를 지원하지 않는 시스템에 특히 유용합니다.


kenorb

$ grep thestring thefile -5

-5 는 일치하는 'thestring'이 -C 5 또는 -A 5 -B 5 5 줄을 가져옵니다.


JBone

Grep에는 Context Line Control --context 를 사용할 수 있습니다.

 | grep -C 5

또는

 | grep -5

트릭을해야합니다


prime

코드를 자주 검색하는 경우 AG Silver searcher 가 grep보다 훨씬 더 효율적입니다(즉, 더 빠름).

-C 옵션을 사용하여 컨텍스트 라인을 표시합니다.

예:

 ag -C 3 "foo" myFile line 1 line 2 line 3 line that has "foo" line 5 line 6 line 7

Rose

나는 그것을 컴팩트하게 한다:

 grep -5 string file

이는 다음과 같습니다.

 grep -A 5 -B 5 string file

franzisk

grep 명령에서 -A (이후) 및 -B (이전) 옵션을 사용할 수 있습니다.

grep -nri -A 5 -B 5 . 시도하십시오.


Issam.Chorfa

출처 : http:www.stackoverflow.com/questions/9081/grep-a-file-but-show-several-surrounding-lines

반응형