끝까지 로그 파일에서 마지막 일치 항목을 추출합니다.

끝까지 로그 파일에서 마지막 일치 항목을 추출합니다.

sed, grep, awk 또는 ruby를 사용하여 쉽게 찾을 수 있는 방법이 있습니까?마지막더 큰 로그 파일의 문자열을 일치시키고 그 뒤의 모든 줄(포함)을 다른 파일로 보내시겠습니까?

예:

grep -A222 "_____________" recent/toptrigs.OX.rb.log

내 최신 해결 방법은 222번째 줄부터 컨텍스트 포스트스크립트가 항상 EOF에 먼저 도달해야 하기 때문입니다.마지막"의 예_____"문자열. 동일한 프로세스에서 동시에 생성된 로그 파일입니다. 따라서 각 항목 루프의 끝에서 STDOUT 및 STDERR을 수동으로 플러시하고 절단 시 이 세그먼트를 고려합니다.

답변1

가장 쉬운 방법은 일치하기 전에 입력을 바꾸는 것입니다.

<logfile tac | sed '/pattern/q' | tac

답변2

다음은 몇 가지 옵션입니다.

  • 줄의 순서를 뒤집는 이점을 활용 tac하고 grep이 다음 줄을 포함하도록 하고(이제 역전되었으므로 이전 줄) 첫 번째 일치 후에 중지한 다음 다시 뒤집어서 순서를 복원할 수 있습니다. 다음과 같이 표시합니다.

    tac /path/to/file | grep -m 1 -B 1 "mypattern" | tac
    
  • 마지막 일치 항목과 다음 줄을 제외한 줄을 제거합니다.

    grep -A 1 "mypattern" /path/to/file | tail -n 2
    

당신은 당신의 파일에 그것을 시도하고 어떤 것이 당신의 경우에 더 나은 성능을 발휘하는지 확인해야 합니다.

명령 앞에 표준 출력 리디렉션을 추가하여 로그 파일에 출력을 추가할 수 있습니다 >> /path/to/outputfile.

관련 정보