문자열에서 날짜 분석하기

Bash:
문자열에서 날짜 분석하기

방법:

Bash 자체는 날짜 파싱 기능이 상당히 제한적이며, dateawk와 같은 외부 도구에 종종 의존하여 보다 섬세한 조작을 수행합니다. 특정 형식을 파싱한 다음 date 명령어를 사용하여 변환하거나 작업을 수행하는 방법은 다음과 같습니다.

예시 1: 날짜 문자열을 추출하여 다른 형식으로 변환하기.

yyyy-mm-dd 형식의 날짜가 있고 이를 dd-mm-yyyy로 변환하려는 경우가 있다고 가정합니다.

original_date="2023-04-01"
formatted_date=$(date -d $original_date '+%d-%m-%Y')

echo $formatted_date

출력 예시:

01-04-2023

이는 date 명령어와 -d 옵션을 사용하여 입력 날짜 문자열을 지정하고, +%d-%m-%Y를 사용하여 출력 형식을 지정합니다.

예시 2: awk를 사용하여 구조화된 텍스트 라인에서 날짜를 파싱하고 변환하기.

다음과 같은 로그 파일 라인이 있다고 가정합니다:

2023-04-01 12:00:00 사용자가 로그인했습니다

awkdate를 사용하여 날짜 부분을 추출하고 변환할 수 있습니다.

log_line="2023-04-01 12:00:00 사용자가 로그인했습니다"
date_part=$(echo $log_line | awk '{print $1}')
formatted_date=$(date -d $date_part "+%A, %B %d, %Y")

echo $formatted_date

출력 예시:

토요일, 4월 01, 2023

이 예시에서는 awk를 사용하여 로그 라인을 분할하고 날짜 부분을 추출합니다($1은 첫 번째 공백으로 구분된 필드를 나타냅니다). 그 다음 date로 다시 형식을 지정합니다.

타사 도구 사용하기

보다 복잡한 파싱이 필요하거나 다양한 날짜 형식을 다룰 때, dateutils와 같은 타사 도구가 매우 유용할 수 있습니다.

dateutils를 사용한 예시:

예를 들어, 비표준 형식인 4월 01, 2023의 날짜 문자열이 있다고 가정합니다.

original_date="4월 01, 2023"
formatted_date=$(dateconv -i "%B %d, %Y" -f "%Y-%m-%d" <<< $original_date)

echo $formatted_date

출력 예시:

2023-04-01

이 명령어는 dateutilsdateconv를 사용하여 -i로 입력 형식을, -f로 원하는 출력 형식을 지정합니다. dateutils는 광범위한 날짜 및 시간 형식을 지원하여 Bash 스크립트에서의 날짜 파싱 작업에 매우 다양하게 사용될 수 있습니다.