Joe*_*Joe 4 vim time command-line
我有一个格式如下的文件
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
Run Code Online (Sandbox Code Playgroud)
其中第三列是自纪元以来进行测量的时间(以秒为单位)。我希望能够将时间视为每天的时钟时间,并且我正在寻找最简单的方法来转换文件中的每一列。
执行转换的最有效方法是什么?(我在 OSX 上)
在 Vim 中,这个快速宏可以完成这项工作:
\n\nqq " start recording\n0 " go to first column\n2W " go to time column\n"mciw " put time in register m and replace it\xe2\x80\xa6\n<C-r>=strftime("%T", @m)<CR> " \xe2\x80\xa6with localized time\n<Esc> " exit insert mode\nq " stop recording\n
Run Code Online (Sandbox Code Playgroud)\n\n录制宏后,选择要翻译的所有行,然后执行以下操作:
\n\n:\'<,\'>norm @q\n
Run Code Online (Sandbox Code Playgroud)\n\n如果这些行与您不想触及的其他行交错,则可以使用该命令仅在与某些模式匹配的行上:g[lobal]
执行宏:
:g/2013-05/norm @q\n
Run Code Online (Sandbox Code Playgroud)\n\n参考:
\n\n:h :normal\n:h :global\n
Run Code Online (Sandbox Code Playgroud)\n\n和
\n\n:h strftime()\n
Run Code Online (Sandbox Code Playgroud)\n\n日期格式的想法。
\n\n使用该宏,您的示例立即变为:
\n\n47 2013-05-01 13:00:11 2 30 15\n47 2013-05-01 13:06:28 1 29 14\n43 2013-05-01 13:24:29 1 26 12\n42 2013-05-01 13:24:49 1 25 11\n42 2013-05-01 13:30:10 1 24 11\n39 2013-05-01 13:50:56 1 22 9\n41 2013-05-01 14:00:10 1 22 9\n36 2013-05-01 14:30:09 1 22 9\n34 2013-05-01 14:46:28 1 20 9\n32 2013-05-01 15:00:08 1 19 9\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
2053 次 |
最近记录: |