패턴을 검색하고 마지막으로 발생한 패턴을 표시합니까?

패턴을 검색하고 마지막으로 발생한 패턴을 표시합니까?

다음이 포함된 로그 파일이 있습니다.시작하다그리고폐쇄하루에 횟수.

마지막 패턴이 시작되고 닫힌 것을 보고 싶습니다(매일 업데이트되는 파일 끝에서).

또한 시작과 종료 사이에 모든 줄이 필요하지 않습니다. 마지막 시작 이후 몇 개의 행(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

관련 정보