首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将列中的时间戳转换为日期?

如何将列中的时间戳转换为日期?
EN

Unix & Linux用户
提问于 2014-11-16 20:08:36
回答 3查看 33.8K关注 0票数 19

我有一份文件,里面有:

代码语言:javascript
复制
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

我想以这种格式将时间戳转换为日期:

代码语言:javascript
复制
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"),因为有很多引号之类的东西。

EN

回答 3

Unix & Linux用户

回答已采纳

发布于 2014-11-16 20:20:34

也许就像这样

代码语言:javascript
复制
perl -pe 'use POSIX qw(strftime); s/^(\d+)/strftime "%F %H:%M:%S", localtime($1)/e' 
票数 9
EN

Unix & Linux用户

发布于 2017-01-13 07:52:41

你也可以尝试:

代码语言:javascript
复制
cat test.txt | sed 's/^/echo "/; s/\([0-9]\{10\}\)/`date -d @\1`/; s/$/"/' | bash
票数 2
EN

Unix & Linux用户

发布于 2017-05-18 15:47:56

9个月前,我提出了一个问题,这个问题与这个问题是重复的。我刚才才看到有人要求在这个问题上贴出对我有用的答案。下面是这个问题和答案的链接。

https://unix.stackexchange.com/a/304009/172916

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/168315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档