나는 다음과 같은 결과를 얻었습니다.
echo "$i"
**@timestamp:** `2023-01-18T15:08:36.698Z`
awk
출력 해서 다음과 같이 만들고 싶습니다 .
Wed 18 Jan 2023 06:50:38 PM EST
이것이 내가 지금까지 시도한 것입니다:
echo "$i" | awk -F'`' '{print $1, "`"strftime("%Y-%m-%d %T", $2)"`"}'
**@timestamp:** `1969-12-31 19:33:43`
왜 1969년이라고 되어 있는지 잘 모르겠습니다...아시나요?
date 명령은 형식을 완벽하게 감지하고 수정할 수 있습니다.
date -d $(echo "$i" | awk -F'`' '{print $2}')
Wed 18 Jan 2023 10:08:36 AM EST
왜 awk가 작동하지 않습니까?
답변1
주석에서 이미 지적했듯이 다른 도구 시간 기능이 GNU의 date
. GNU awk의 시간 함수를 사용하여 수행하려는 작업을 수행하는 방법은 다음과 같습니다.
$ TZ='EST' awk -F'`' '{print strftime("%a %d %b %Y %T %Z",mktime(gensub(/[^0-9]/," ","g",$2),1))}' file
Wed 18 Jan 2023 10:08:36 EST
또는 실제로 원하는 출력이 코드에서 수행하려는 결과인 경우:
$ TZ='EST' awk -F'`' '{print strftime("%F %T %Z",mktime(gensub(/[^0-9]/," ","g",$2),1))}' file
2023-01-18 10:08:36 EST