免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4658 | 回复: 12
打印 上一主题 下一主题

[文本处理] 把文件里面的时间转换成时间戳 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-05 15:01 |只看该作者 |倒序浏览
有个文件

2014-03-02 00:00:00,100 |0|10|||1393689600097|pc|1|true|0|0|3
2014-03-02 00:00:00,209 |0|50|||1393689600207|pc|1|true|0|0|2
2014-03-02 00:00:00,214 |0|12||all|1393689600211|android|3|true|0|0|3
2014-03-02 00:00:00,322 |0|20||all|1393689600320|iphone|3|true|0|0|2
2014-03-02 00:00:00,401 |0|50|||1393689600399|pc|1|true|0|0|2
2014-03-02 00:00:00,618 |0|50|||1393689600615|pc|1|true|0|0|3
2014-03-02 00:00:00,655 |0|50|||1393689600653|pc|1|true|0|0|2
2014-03-02 00:00:00,707 |190|10|||1393689160537|pc|1|false|686|0|176
2014-03-02 00:00:00,745 |0|10|||1393689600742|pc|1|true|0|0|3
2014-03-02 00:00:00,848 |0|10|||1393689600846|pc|1|true|0|0|2

第一个  |  前面是要转换的部分

逗号前面是时间,逗号后面是毫秒数

怎么把这个部分转成时间戳形式,比如   2014-03-02 00:00:00,100 我想转成  1393689600100, 其中1393689600是前面的日期转的最后三位是毫秒数

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
2 [报告]
发表于 2014-03-05 15:16 |只看该作者
  1. [root@syh test]# awk -vFS=, '{t=gensub(/(....)-(..)-(..) (..):(..):(..)/,"\\1 \\2 \\3 \\4 \\5 \\6","g",$1);$1=mktime(t)","$2;$2="";print $0}' a
  2. 1393689600,100 |0|10|||1393689600097|pc|1|true|0|0|3
  3. 1393689600,209 |0|50|||1393689600207|pc|1|true|0|0|2
  4. 1393689600,214 |0|12||all|1393689600211|android|3|true|0|0|3
  5. 1393689600,322 |0|20||all|1393689600320|iphone|3|true|0|0|2
  6. 1393689600,401 |0|50|||1393689600399|pc|1|true|0|0|2
  7. 1393689600,618 |0|50|||1393689600615|pc|1|true|0|0|3
  8. 1393689600,655 |0|50|||1393689600653|pc|1|true|0|0|2
  9. 1393689600,707 |190|10|||1393689160537|pc|1|false|686|0|176
  10. 1393689600,745 |0|10|||1393689600742|pc|1|true|0|0|3
  11. 1393689600,848 |0|10|||1393689600846|pc|1|true|0|0|2
复制代码

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
3 [报告]
发表于 2014-03-05 15:18 |只看该作者
  1. awk -F ',' '{gsub(/[-: ]/,"",$1);a=gensub(/(....)(..)(..)(..)(..)(..)/,"\\1 \\2 \\3 \\4 \\5 \\6","g",$1);$1=mktime(a)$2}1'
复制代码

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
4 [报告]
发表于 2014-03-05 15:19 |只看该作者
回复 2# 这个冬天不冷
$1和$2需要合并在一起输出。

   

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
5 [报告]
发表于 2014-03-05 15:20 |只看该作者
  1. awk -F'[,|]' '{gsub(/[-:]/," ",$1);print mktime($1)$2}'
复制代码

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
6 [报告]
发表于 2014-03-05 15:20 |只看该作者
回复 4# LikeLx ,考虑到了,,去个逗号就可以了,嘎嘎,这样是更方便看结果


   

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
7 [报告]
发表于 2014-03-05 15:22 |只看该作者
回复 5# WilliBhamlll

看见大神这代码,感觉自己半天功夫白费了
   

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
8 [报告]
发表于 2014-03-05 15:25 |只看该作者
本帖最后由 LikeLx 于 2014-03-05 15:26 编辑

回复 5# WilliBhamlll
  1. 直接-F ',' 就全输出了
复制代码

论坛徽章:
0
9 [报告]
发表于 2014-03-05 15:31 |只看该作者
综合以上大牛的超强代码,我是这样做的


awk -F',' '{gsub(/[-:]/," ",$1);print mktime($1)$2}'

论坛徽章:
50
15-16赛季CBA联赛之广夏
日期:2018-11-05 09:42:462015年亚冠纪念徽章
日期:2015-07-23 11:58:122015亚冠之广州富力
日期:2015-07-07 08:26:172015亚冠之塔什干棉农
日期:2015-06-29 09:08:072015年亚洲杯之伊朗
日期:2015-03-08 20:51:012015年迎新春徽章
日期:2015-03-04 09:58:11未羊
日期:2014-10-16 22:41:47处女座
日期:2014-10-16 15:33:33酉鸡
日期:2014-03-13 12:54:10巳蛇
日期:2014-03-10 14:39:052015亚冠之德黑兰石油
日期:2015-07-29 12:46:372015亚冠之德黑兰石油
日期:2015-08-07 12:54:11
10 [报告]
发表于 2014-03-05 15:32 |只看该作者
回复 8# LikeLx


    没错,原以为只输出转换的部分就行了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP