일부 타사 로그 파일이 있고 명령줄에서 오류를 추출하려고 합니다.
로그는 다음과 같습니다.
time=1
time=2
time=3
at com.test.com....
at com.test.com....
at com.test2.com....
time=4
time=5
time=6
time=7
time=8
time=9
at org.badstuff.com...
at org.badstuff.com...
at org.badstuff.com...
time=10
time=11
로 시작하는 줄은 at
TAB 문자로 시작하므로 쉽게 일치시킬 수 있습니다.
이 파일에서 이러한 스택 추적을 어떻게 추출할 수 있습니까?그리고매번 첫 번째 스택 추적 이전에는 몇 줄이 있습니까? 저는 Mac을 사용하고 있지만 가능하다면 Mac/Linux에서 실행되는 범용 솔루션을 선호합니다. 두 가지 모두에서 자주 작업해야 하기 때문입니다.
위의 예에서 다음을 얻습니다.
time=2
time=3
at com.test.com....
at com.test.com....
at com.test2.com....
time=8
time=9
at org.badstuff.com...
at org.badstuff.com...
at org.badstuff.com...
답변1
예를 들어 -A
after 컨텍스트, -B
efore 컨텍스트 또는 -C
컨텍스트 옵션을 사용하십시오 .grep
grep -B2 '^\t' file
답변2
grep -B2 -P '^\t' logfile
각 게임 세트 전에 두 줄을 선택하는 데 사용됩니다 . 일치 항목 사이에 삽입된 그룹 구분 기호 "--"를 가려야 할 수도 있습니다.
결과
$ grep -B2 -P '^\t' /tmp/t
time=2
time=3
at com.test.com....
at com.test.com....
at com.test2.com....
--
time=8
time=9
at org.badstuff.com...
at org.badstuff.com...
at org.badstuff.com...