이 코드 블록은 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이
line을echo로 출력하면: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)
breakTotal행을 찾고 값을 추출했으므로, 더 이상 반복할 필요가 없어서foreach루프를 종료합니다.
결과 예시
입력 로그
Total 0 0 1 3 5287 7923출력된 변수 값
fatal_count = 0
error_count = 0
warning_count = 1이 값들을 바탕으로 결과를 판별하게 됩니다.
정리
"Total"행을 찾는다.tr -s ' '로 공백을 정리한 후cut -d' ' -f2-로 숫자만 추출.- 추출한 숫자를 배열
tokens에 저장. tokens에서Fatals,Errors,Warnings값을 가져와 변수에 저장.- 값을 찾았으면
break로 루프 종료.
이해가 됐나요? 추가 질문 있으면 알려주세요! 😊
'IT > 리눅스' 카테고리의 다른 글
| 우분투 - mobaxterm 에서 xwindow 응용에서 한글키 입력 오류 해결 (0) | 2025.09.15 |
|---|---|
| sed 로 # 뒤 문자열 제거하기, 즉 주석 같은 구문 제거 (0) | 2025.02.07 |
| 쉘스크립트 - echo 로 멀티 라인 문자열 저장하는 방법 EOF (0) | 2025.02.06 |
| grep 으로 문자열 검색하기 (0) | 2025.01.22 |
| split - 용량 큰 로그 파일, 텍스트 파일 나누기 (0) | 2025.01.22 |