다음이 포함된 로그 파일이 있습니다.시작하다그리고폐쇄하루에 횟수.
마지막 패턴이 시작되고 닫힌 것을 보고 싶습니다(매일 업데이트되는 파일 끝에서).
또한 시작과 종료 사이에 모든 줄이 필요하지 않습니다. 마지막 시작 이후 몇 개의 행(3개 행)과 마지막 종료 이후 몇 개의 행(3개 행)만 원합니다.
한 줄짜리 제안이 있습니까?
답변1
로그 파일의 (추출된) 행을 두 번 뒤집어도 괜찮다면 sed
및 의 조합을 사용할 수 있습니다(참조:grep
파일의 줄을 바꾸는 방법은 무엇입니까?).
# test case
echo '
startup 1
shutdown 1
startup 2
shutdown 2
startup 3
line 1
line 2
line 3
line 4
line 5
shutdown 3
line 1
line 2
line 3
line 4
line 5
' |
tail -r | sed -n -e '1,/startup/p' | tail -r | grep -E -A 3 '(startup|shutdown)'
# output
startup 3
line 1
line 2
line 3
--
shutdown 3
line 1
line 2
line 3
답변2
"--after-context" 옵션을 사용하여 sed 대신 grep을 사용해 보세요.
예:
cat logfile | grep --after-context=3 startup