에포크 초를 인라인으로 변환 (바람직하게는 vim이나 명령 행은 멋지다)


2

형식이있는 파일이 있습니다.

47 2013-05-01 1367406011 2 30 15
47 2013-05-01 1367406388 1 29 14
43 2013-05-01 1367407469 1 26 12
42 2013-05-01 1367407489 1 25 11
42 2013-05-01 1367407810 1 24 11
39 2013-05-01 1367409056 1 22 9
41 2013-05-01 1367409610 1 22 9
36 2013-05-01 1367411409 1 22 9
34 2013-05-01 1367412388 1 20 9
32 2013-05-01 1367413208 1 19 9

세 번째 열은 측정이 경과 된 후 몇 초 내에 측정 된 시간입니다. 매일 시계 시간으로 시간을 볼 수 있기를 원하며 파일의 모든 열을 변환하는 가장 간단한 방법을 찾고 있습니다.

전환을 수행하는 가장 효과적인 방법은 무엇입니까? (나는 OSX에있다)


어떤 OS를 사용하고 있습니까?
Tanner Faulkner

안녕하세요 ~ tanner- 나는 OSX에서 편집 할 것입니다 ...
Joe

답변:


2

이 작업을 수행하는 컴퓨터에 Perl이 설치되어 있고 파일의 모든 줄이 질문에있는 예제와 동일하게 형식화되어 있으면 다음 명령 줄은 Unix 시간을 인간으로 바꾼 파일 버전을 방출합니다 읽을 수있는 값 :

cat source-file | perl -pe's@(^\d+ [\d-]+ )(\d+)@$1 . scalar(localtime($2))@e;'

나는 이맥스 사용자이다. 그러나 vim 매뉴얼에서 다음 명령을 사용하여 현재 버퍼의 내용에이 명령을 적용 할 수있다.

1,$!perl -pe's@(^\d+ [\d-]+ )(\d+)@$1 . scalar(localtime($2))@e;'

3

Vim에서이 빠른 매크로는 작업을 수행합니다.

qq                           " start recording
0                            " go to first column
2W                           " go to time column
"mciw                        " put time in register m and replace it…
<C-r>=strftime("%T", @m)<CR> " …with localized time
<Esc>                        " exit insert mode
q                            " stop recording

매크로가 기록되면 변환 할 모든 선을 선택한 다음 수행하십시오.

:'<,'>norm @q

이 선들이 만지기를 원하지 않는 다른 선들과 인터리빙 된 경우, :g[lobal] 매크로를 실행하는 명령 어떤 패턴과 일치하는 줄에 :

:g/2013-05/norm @q

참고:

:h :normal
:h :global

:h strftime()

날짜 형식 지정 아이디어.

해당 매크로를 사용하면 샘플이 즉시 나타납니다.

47 2013-05-01 13:00:11 2 30 15
47 2013-05-01 13:06:28 1 29 14
43 2013-05-01 13:24:29 1 26 12
42 2013-05-01 13:24:49 1 25 11
42 2013-05-01 13:30:10 1 24 11
39 2013-05-01 13:50:56 1 22 9
41 2013-05-01 14:00:10 1 22 9
36 2013-05-01 14:30:09 1 22 9
34 2013-05-01 14:46:28 1 20 9
32 2013-05-01 15:00:08 1 19 9

대답의 완성을 위해 +1 (그리고 vim에 대해 좀 더 가르쳐 줘라.). 그러나 나를 위해 약간 더 반복적 인 다른 대답을 받아 들였다.
Joe

좋은 주인, 저 매크로 - 사람들은 Emacs가 지나치게 복잡하다고 말합니다 ...
Aaron Miller

Vim의 모든 기능과 마찬가지로이 매크로는 모든 Vimmer가 알고있는 작은 "벽돌"즉 연산자, 명명 된 레지스터, 텍스트 개체를 기반으로합니다. 하나의 긍정적 인 효과는 당신이 전체적으로이 것을 배울 필요가 없지만 그것을 반복하고 많은 노력없이 나중에 그것을 적용 할 수 있다는 것입니다. 또는 내가했던 것처럼 편집기를 사용하지 않고도 즉석에서 즉석에서 편집 할 수 있습니다. 완전히 perl-knoworant 인 당신의 대답은 지나치게 복잡하고 장황하게 보입니다. 그러나 각자 자신에게, 나는 추측한다.
romainl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.