본문 바로가기

이 코드 블록은 Total 행을 찾아서 Fatals, Errors, Warnings 값을 추출하는 역할을 합니다.
자세히 분석해볼게요.

foreach line ("`head -n $num_lines $logfile`")
    @ line_count++

    if ("$line" =~ "*Management Summary*") then
        set summary_flag = 1
        continue
    endif

    if ($summary_flag == 1) then
        # "Total" 행에서 값 추출
        if ("$line" =~ "*Total*") then
            set tokens = (`echo $line | tr -s ' ' | cut -d' ' -f2-`)
            set fatal_count = $tokens[1]
            set error_count = $tokens[2]
            set warning_count = $tokens[3]
            break
        endif
    endif

    # 최대 n줄까지만 처리
    if ($line_count >= $num_lines) then
        break
    endif
end

코드 상세 분석

if ("$line" =~ "*Total*") then
  • 현재 line"Total"을 포함하고 있는지를 확인하는 조건문입니다.
  • Total 행을 찾으면 아래 코드를 실행합니다.

set tokens = (`echo $line | tr -s ' ' | cut -d' ' -f2-`)

이 부분은 "Total" 행에서 숫자 값을 추출하는 핵심 코드입니다. 하나씩 분석해보겠습니다.

1. echo $line

  • 현재 line 값을 출력합니다.

  • 예를 들어, Total 행이 다음과 같다면:

    Total                               0         0         1         3      5287          7923

    lineecho로 출력하면:

    Total 0 0 1 3 5287 7923

2. tr -s ' '

  • tr -s ' '는 연속된 공백을 하나의 공백으로 줄이는 역할을 합니다.

  • 원본 line에는 공백이 여러 개 있지만, tr -s ' '를 적용하면:

    Total 0 0 1 3 5287 7923

    처럼 공백이 하나로 정리됩니다.

3. cut -d' ' -f2-

  • cut 명령어를 사용하여 "Total" 단어를 제외한 나머지 숫자들을 추출합니다.

  • -d' '는 공백을 기준으로 필드를 구분한다는 의미입니다.

  • -f2-두 번째 필드부터 끝까지 선택한다는 뜻입니다.

  • 결과적으로:

    0 0 1 3 5287 7923

    이 값이 tokens 배열에 저장됩니다.


set fatal_count = $tokens[1]
set error_count = $tokens[2]
set warning_count = $tokens[3]
  • tokens 배열에서 Fatal, Error, Warning 값을 각각 변수에 저장합니다.
  • tokens[1]Fatals 값 (0)
  • tokens[2]Errors 값 (0)
  • tokens[3]Warnings 값 (1)

break
  • Total 행을 찾고 값을 추출했으므로, 더 이상 반복할 필요가 없어서 foreach 루프를 종료합니다.

결과 예시

입력 로그

Total                               0         0         1         3      5287          7923

출력된 변수 값

fatal_count = 0
error_count = 0
warning_count = 1

이 값들을 바탕으로 결과를 판별하게 됩니다.


정리

  1. "Total" 행을 찾는다.
  2. tr -s ' '로 공백을 정리한 후 cut -d' ' -f2-로 숫자만 추출.
  3. 추출한 숫자를 배열 tokens에 저장.
  4. tokens에서 Fatals, Errors, Warnings 값을 가져와 변수에 저장.
  5. 값을 찾았으면 break로 루프 종료.

이해가 됐나요? 추가 질문 있으면 알려주세요! 😊

네이버밴드네이버블로그핀터레스트텔레그램링크드인포켓레딧이메일

B로그0간

개발 관련 글과 유용한 정보를 공유하는 공간입니다.