![date -d UNIX 명령에서 dd/mm/yyyy 날짜 문자열을 읽는 방법은 무엇입니까?](https://linux55.com/image/150693/date%20-d%20UNIX%20%EB%AA%85%EB%A0%B9%EC%97%90%EC%84%9C%20dd%2Fmm%2Fyyyy%20%EB%82%A0%EC%A7%9C%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%EC%9D%BD%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
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"