[search] 파일을 grep하지만 몇 줄의 주변 줄을 표시 하시겠습니까?

grep문자열을 원하지만 앞의 다섯 줄과 다음 다섯 줄뿐만 아니라 일치하는 줄도 표시하고 싶습니다 . 이 작업을 어떻게 수행 할 수 있습니까?



답변

들어 BSDGNU grep 당신이 사용할 수있는 -B num경기 전에 얼마나 많은 라인을 설정 -A num경기 후 라인의 수.

grep -B 3 -A 2 foo README.txt

이전과 이후에 같은 수의 행을 원하면을 사용할 수 있습니다 -C num.

grep -C 3 foo README.txt

3 줄 앞과 뒤에 3 줄이 표시됩니다.


답변

-A원하는 -B대로 -C n( n컨텍스트 라인) 또는 그냥 -n( n컨텍스트 라인 … n이 1 ~ 9 인 한) 작동합니다.


답변

ack 는 grep과 비슷한 인수로 작동하며 받아들 -C입니다. 그러나 일반적으로 코드를 검색하는 것이 좋습니다.


답변

grep astring myfile -A 5 -B 5

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


답변

나는 보통

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

grep과 같은 많은 도구에는 실제로 훌륭한 man 파일도 있습니다. 나는 당신이 할 수있는 일이 너무 많기 때문에 grep의 맨 페이지 를 많이 언급하고 있습니다.

man grep

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

info grep


답변

grep 사용

$ 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


답변

“/some/file.txt”앞뒤에 10 줄의 컨텍스트 (Awk 사용)를 표시하는 “17655”를 검색하고 출력 앞에 줄 번호와 콜론을 차례로 표시합니다. ‘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;