내 질문에 제공된 다양한 솔루션을 시도했지만 내 솔루션이 중복된 것 같습니다. 그 중 일부는 실제로 시간을 변환하지 않고, 그 중 하나는 시간을 변환하지만 연도가 잘못되어 파일의 기존 값을 바꾸는 대신 출력에 새 열을 추가합니다. 아래에서 내가 수락한 대답은 내가 필요한 것을 정확히 수행합니다.
중복이라면 죄송합니다. 많이 검색했지만 제 상황에 맞는 질문을 찾지 못했습니다. 나는 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