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 줄이 표시됩니다.
답변
-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;