파일을 grep하지만 주변 여러 줄을 표시합니까?
-
08-06-2019 - |
문제
나는하고 싶다 grep
문자열의 경우 이전 5개 라인과 다음 5개 라인 및 일치하는 라인도 표시합니다.어떻게 하면 이런 일을 할 수 있을까요?
해결책
을 위한 BSD 또는 암소 비슷한 일종의 영양 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인 경우).
확인 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
"/some/file.txt"에서 "17655"를 검색하면 앞뒤에 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;
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
ripgrep
성능에 관심이 있다면 사용하세요 ripgrep
다음과 비슷한 구문을 가지고 있습니다. grep
, 예를 들어
rg -C5 "pattern" .
-C
,--context NUM
- 각 경기 전후에 NUM줄을 표시합니다.
다음과 같은 매개변수도 있습니다. -A
/--after-context
그리고 -B
/--before-context
.
이 도구는 다음을 기반으로 구축되었습니다. Rust의 정규식 엔진 그것은 매우 효율적인 대용량 데이터에.
$grep thestring thefile -5
-5 일치 'thestring'위와 아래에 5 줄이 -c 5 또는 -a 5 -B 5에 해당합니다.
Grep에는 다음과 같은 옵션이 있습니다. Context Line Control
, 당신은 --contect
그 점에서는 간단하게,
| grep -C 5
또는
| grep -5
트릭을 수행해야합니다
여기는 @Ygor 솔루션 ~에 awk
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
앞과 뒤의 줄 수가 있는 변수.
grep을 지원하지 않는 시스템에 특히 유용합니다. -A
, -B
그리고 -C
매개변수.