Multi Line to Single Line
포스트
취소

Multi Line to Single Line

이 스크립트의 주 목적은 로그 파일을 처리하여 각 로그 메시지를 단일 줄로 변환하는 것입니다. 이를 통해 로그 파일의 가독성을 향상시키고, 분석이나 검색을 용이하게 합니다.

  • 변수 설정: 스크립트는 PATTERN이라는 변수를 사용하여 로그 메시지의 시작 패턴을 정의합니다. 기본값은 날짜와 시간을 나타내는 정규 표현식입니다.
  • 입력 파일 처리: 스크립트는 첫 번째 인자로 입력 파일을 받습니다. 인자가 제공되지 않으면 스크립트는 사용 방법을 출력하고 종료됩니다.
  • 로그 메시지 처리: awk 명령어를 사용하여 로그 파일을 처리합니다. 이 스크립트는 정의된 패턴을 사용하여 새로운 로그 메시지의 시작을 감지하고, 연속된 줄을 하나의 줄로 결합합니다. 이렇게 하여 각 로그 메시지가 단일 줄로 출력됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# !/bin/bash

# 로그 메시지 시작 패턴을 변수로 저장. 기본값은 날짜와 시간 패턴 (YYYY-MM-DD HH:MM:SS)
# 필요에 따라 이 값을 원하는 정규 표현식으로 변경하여 사용

PATTERN='^.[0-9]{4}-[0-9]{2}-[0-9]{2}'

INPUT_FILE="$1"


# 인자가 제공되지 않았을 경우 스크립트 종료

if [ -z "$INPUT_FILE" ]; then
    echo "Usage: $0 <INPUT_FILE>"
    exit 1
fi

# 각 로그 메시지를 한 줄로 변환하여 출력
# 이는 로그 시작 패턴에 따라 새로운 메시지를 감지하고, 연속된 줄을 이어 붙여 처리
awk -v pattern="$PATTERN" \
    '{
        if ($0 ~ pattern) {
            if (NR != 1) print line;
            line=$0;
        } else {
            line=line" "$0;
        }
    }
    END {
        print line;
    }' "$INPUT_FILE"

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Tmux를 이해하고 사용해보자

Python venv란?

Comments powered by Disqus.