grep 사용해서 특정 키워드가 들어간 라인 + 앞뒤 몇라인까지 출력하기
]$ grep "keyword" test.txt
기본적인 방법. test.txt에서 'keyword'라는 글자가 들어간 라인을 모두 찾아서 출력한다.
그런데 여기서 그 라인뿐만 아니라 위,아래 몇 라인까지 출력하고 싶을 때가 있다.
그때는 grep 명령어의 -A, -B 옵션이 유용하다.
]$ grep -A10 "keyword" test.txt
'keyword'가 등장한 라인 다음부터 '-A'뒤의 숫자만큼 즉 열 줄을 더 출력한다.
'-B'는 반대로 그 라인의 윗부분을 그 숫자만큼 출력한다.
참고로, fgrep은 '하나'의 패턴을 찾을 때 grep보다 빠르게 처리한다고 하며,
두 가지 이상의 패턴을 찾을 때는 egrep을 쓰면 좋다.
egrep은 패턴매치를 인식한다. (awk 또한.)
즉 exp+, exp*, exp?, exp1|exp2|exp3 등의 표현을 쓸 수 있다.
'SampleNumber_SampleName.txt' 파일이
1 KFvE004I06
2 KFvE005E20
3 KFvE007F16
........
49 KFvE002E24
50 KFvE003G18
51 KFvE003G24
52 KFvE005A02
....
이렇게 되어있을 때, egrep 사용법은 다음과 같다. 'OR 매치'를 하고 싶으면,
]$ egrep "^50|^51|^52|^53|^58|^61|^63|^84" SampleNumber_SampleName.txt
50 KFvE003G18
51 KFvE003G24
52 KFvE005A02
53 KFvE007C11
58 KFvE010B08
]$ egrep "50|51" SampleNumber_SampleName.txt
50 KFvE003G18
51 KFvE003G24
150 KFVH009J24
151 KFVH010E08
It works.
위와 같이 설정해서 내용은 grep 했지만, 정작 어떤게 검색된 색인어 인지 구분하기 어렵다
이럴때 색인어에 색상을 줄수 있다.
grep --color -e "pattern$" ..
ex) grep --color -e Error -e Exception -B10 -A15