ISO 8601 형식 파일에 저장된 Unix 시간을 변환하고 바꿀 수 있나요? [복사]

ISO 8601 형식 파일에 저장된 Unix 시간을 변환하고 바꿀 수 있나요? [복사]

내 질문에 제공된 다양한 솔루션을 시도했지만 내 솔루션이 중복된 것 같습니다. 그 중 일부는 실제로 시간을 변환하지 않고, 그 중 하나는 시간을 변환하지만 연도가 잘못되어 파일의 기존 값을 바꾸는 대신 출력에 새 열을 추가합니다. 아래에서 내가 수락한 대답은 내가 필요한 것을 정확히 수행합니다.

중복이라면 죄송합니다. 많이 검색했지만 제 상황에 맞는 질문을 찾지 못했습니다. 나는 Linux를 많이 사용하지만 나의 "프로그래밍" 기술은 간단한 쉘 스크립트에만 국한되어 있습니다.

epoch(예: Unix) 형식으로 작성된 날짜/타임스탬프 열이 있는 csv 파일이 있습니다. 아래 예를 참조하세요. Unix 시간을 ISO 8601 형식으로 변환하고 교체하고 싶습니다.

기존 출력의 예:

foo, 1439856000000000000, foo, foo
foo, 1439856360000000000, foo, foo
foo, 1439856720000000000, foo, foo
foo, 1439857080000000000, foo, foo

원하는 출력의 예:

foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo
foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo
foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo
foo, YYYY-MM-DD HH:MM:SS.nnnnnnnnn, foo, foo

답변1

나는 다음을 사용할 것이다 perl:

perl -MPOSIX -pe 's{\b\d{10}(?=\d{9}\b)}{
  strftime("%Y-%m-%d %T.", localtime $&)}ge'

(여기에 제공된 현지 시간 은 GMT 시간 gmtime이 아닙니다 )localtime

관련 정보