date -d UNIX 명령에서 dd/mm/yyyy 날짜 문자열을 읽는 방법은 무엇입니까?

date -d UNIX 명령에서 dd/mm/yyyy 날짜 문자열을 읽는 방법은 무엇입니까?

dd/mm/yyyy hh:mm:ss 형식의 날짜가 포함된 텍스트 파일의 열을 yy-mm-dd hh:mm:ss로 동적으로 변환하려고 합니다. 다음 명령은 작동하지만 필요에 따라 yy-mm-dd 형식 대신 yy-dd-mm 형식으로 출력을 제공합니다.

echo $(date -d "8/11/2018 06:20:57 AM" "+%y-%m-%d %H:%M:%S")

산출:

18-08-11 06:20:57

또한 다음과 같이 첫 번째 숫자를 일이 아닌 월로 처리하므로 12보다 큰 날짜에는 작동하지 않습니다.

echo $(date -d "28/11/2018 06:20:57 AM" "+%y-%m-%d %H:%M:%S")

산출:

date: invalid date ‘28/11/2018 06:20:57 AM’

작동하게 하는 방법이 있나요?

답변1

먼저 전처리하는 것이 좋습니다. 내 최고의 기회는sed

echo "28/11/2018 06:20:57 PM" | sed -E "s/([0-9]+)\/([0-9]+)\/([0-9]+) ([0-9]+):([0-9]+):([0-9]+) ([APM]{2})/\3\/\2\/\1 \4:\5:\6 \7/g" | xargs -I II date -d II "+%y-%m-%d %H:%M:%S"

관련 정보