열의 타임 스탬프를 날짜로 변환하려면 어떻게해야합니까?


15

이것을 포함하는 파일이 있습니다 :

1415602803,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22
1415602807,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22
1415602811,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22
1415602815,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22

타임 스탬프를이 형식의 날짜로 변환하고 싶습니다.

2014-11-10 02:00:03,LOGIN SUCCESS,AUTH,user2,192.168.203.63,10.146.124.73,59996,22
2014-11-10 02:00:07,LOGIN SUCCESS,AUTH,user1,172.24.31.10,172.32.1.1,48191,22
2014-11-10 02:00:11,LOGIN FAILED,AUTH,root,172.24.166.153,10.146.124.73,52506,22
2014-11-10 02:00:15,LOGIN FAILED,AUTH,user3,192.168.123.55,10.146.32.99,55750,22

어떻게해야합니까?

나는 이것이 효과가 있음을 알고있다 : perl -pe 's/(\d+)/localtime($1)/e'( 이 질문에서 ) 출력 형식은 Mon Nov 10 02:00:03 2014입니다.

이 명령으로 타임 스탬프를 원하는 출력으로 변환 할 수 있다는 것을 알고 date -d@1415602803 +"%F %H:%M:%S"있지만 모든 인용문과 그 밖의 이유로 인해 awk사용할 수 없습니다 system("cmd").

답변:


6

아마도 이것처럼

perl -pe 'use POSIX qw(strftime); s/^(\d+)/strftime "%F %H:%M:%S", localtime($1)/e' 

17

여기서 뭔가를 발견했습니다 : Stackoverflow-명령 줄에서 unixtime에서 변환 하십시오 .

이걸로 온 :

awk -F"," '{OFS=","; $1=strftime("%Y-%m-%d %H:%M:%S", $1); print $0}' file
  • -F","필드 분리 제를 사용하는 ,,
  • OFS=",";이렇게 출력 필드도에 의해 분리되는 ,,
  • $1=strftime("%Y-%m-%d %H:%M:%S", $1);첫 번째 필드의 값을 $1지정된 형식 으로 변경
  • print $0; 전체 라인을 인쇄합니다.

2
awk 'BEGIN{ print strftime("%Y-%m-%d %H:%M:%S", 0) }'awk: line 2: function strftime never defined여기에 제공 합니다. 모든 AWK가 아님을 명확히하십시오 strftime()! 대부분의 AWK에서 실행되는 솔루션의 경우 외부 date명령을 사용하여 이식성을 유지하십시오.

2
@yeti에는 date형식간에 날짜를 확장으로 변환 할 수 있는 몇 가지 구현이 있지만 수행 방법은 구현마다 완전히 다릅니다. 예를 들어 Costas가 제공 한 솔루션은 GNU 고유의 구문을 사용합니다 date. 이식성을 원하면을 사용하십시오 perl.
Stéphane Chazelas

4

원하는 경우 모든 날짜 형식으로 awk외부 명령 date을 사용할 수 있습니다

awk -F, -v OFS="," '{("date +%F\ %T -d @"$1)|getline $1}1'

사용하지 않을 경우 +1 strftime()!

4
외부 명령을 사용하면 특히 수천 행이 처리되는 경우 현저한 성능 저하가 발생합니다.
Jose Gómez

2

시도해 볼 수도 있습니다 :

cat test.txt | sed 's/^/echo "/; s/\([0-9]\{10\}\)/`date -d @\1`/; s/$/"/' | bash

2

나는 9 개월 전에이 질문과 중복 된 질문을했습니다. 나는 단지이 질문에 저에게 도움이 된 답변을 게시하라는 요청을 보았습니다. 해당 질문과 답변에 대한 링크는 다음과 같습니다.

/unix//a/304009/172916

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.