免费注册 查看新帖 |

Chinaunix

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

[文本处理] 想通过一个脚本实现把这些带#号的时间戳都转换成正常的时间格式,如何实现? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-08-28 00:16 |只看该作者 |倒序浏览
有一个文本t.txt内容如下:
[root@sgdbtest root]# cat t.txt
#1376845290
df -h
#1376845293
free -m
#1376845297
ifconfig
#1376845303
history -w
#1376845290
df -h
#1376845293
free -m
#1376845297
ifconfig
#1376845303
history -w
#1376845307
history

其中,带#号的奇数行为时间戳,我现在想把带#号的时间戳替换成具体的时间点,怎么实现呢?请大虾指教

[root@sgdbtest root]# cat t.txt|grep "#"|awk -F  '#' '{print $2}'|while read line;do  date  -s @$line +'%F %T';done      
2013-08-18 13:01:30
2013-08-18 13:01:33
2013-08-18 13:01:37
2013-08-18 13:01:43
2013-08-18 13:01:30
2013-08-18 13:01:33
2013-08-18 13:01:37
2013-08-18 13:01:43
2013-08-18 13:01:47
2013-08-18 13:02:25

我的思路是想通过 # date -s @1376845303 +'%F %T'将文件中的时间戳转换成正常时间格式,再插入或替换文件中的奇数行。
现在,想通过一个脚本实现把这些带#号的时间戳都转换成正常的时间格式,如何实现?请高手指点一下?非常感谢!


论坛徽章:
2
辰龙
日期:2013-09-24 12:26:05卯兔
日期:2013-09-24 12:27:37
2 [报告]
发表于 2013-08-28 00:43 |只看该作者
如果可以改变环境变量修改时间格式,或者如何拼起来命令串
  1. awk '{if($0 !~ "#"){print} else {cmd="date -s @" substr($0,2)  ; system (cmd)}}' time
复制代码

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2013-08-28 09:02 |只看该作者
回复 1# vcdog
  1. awk -F# 'NF>1{print strftime("%F %T",$2)}' file
复制代码

论坛徽章:
1
天蝎座
日期:2013-08-22 15:14:44
4 [报告]
发表于 2013-08-28 09:09 |只看该作者
本帖最后由 guogang225 于 2013-08-28 09:20 编辑

回复 1# vcdog
  1. awk 'NR%2==1{$0="#"strftime("%Y-%m-%d %H:%M:%S",substr($0,2))}1'  urfile
复制代码
  1. #2013-08-18 10:01:30
  2. df -h
  3. #2013-08-18 10:01:33
  4. free -m
  5. #2013-08-18 10:01:37
  6. ifconfig
  7. #2013-08-18 10:01:43
  8. history -w
  9. #2013-08-18 10:01:30
  10. df -h
  11. #2013-08-18 10:01:33
  12. free -m
  13. #2013-08-18 10:01:37
  14. ifconfig
  15. #2013-08-18 10:01:43
  16. history -w
  17. #2013-08-18 10:01:47
  18. history
复制代码
or
  1. awk -F\# -vOFS="#" 'NR%2==1{$2=strftime("%F %T",$2)}1' urfile
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
5 [报告]
发表于 2013-08-28 11:14 |只看该作者
来个Python的:
  1. #!/usr/bin/python
  2. import re,time
  3. for r in open('urfile'):
  4.         if re.search('^#',r):
  5.                 strtime=int(re.sub('^#',"",r))
  6.                 print re.sub('\d+',time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(strtime)),r).strip()
  7.         else:
  8.                 print r.strip()
复制代码

论坛徽章:
0
6 [报告]
发表于 2013-08-28 11:42 |只看该作者
awk -F# '{if($0~/^#/)print strftime("%F %T",$2);else print $1}' 1

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
7 [报告]
发表于 2013-08-29 09:40 |只看该作者
  1. [seesea@UC ~]$ sed '/^#/{s///; s/.*/date +"%F %T" -d @&/e; }' file     
  2. 2013-08-19 01:01:30
  3. df -h
  4. 2013-08-19 01:01:33
  5. free -m
  6. 2013-08-19 01:01:37
  7. ifconfig
  8. 2013-08-19 01:01:43
  9. history -w
  10. 2013-08-19 01:01:30
  11. df -h
  12. 2013-08-19 01:01:33
  13. free -m
  14. 2013-08-19 01:01:37
  15. ifconfig
  16. 2013-08-19 01:01:43
  17. history -w
  18. 2013-08-19 01:01:47
  19. history
  20. [seesea@UC ~]$ awk -F# '/^#/{print strftime("%F %T",$2)}; /^[^#]/' file
  21. 2013-08-19 01:01:30
  22. df -h
  23. 2013-08-19 01:01:33
  24. free -m
  25. 2013-08-19 01:01:37
  26. ifconfig
  27. 2013-08-19 01:01:43
  28. history -w
  29. 2013-08-19 01:01:30
  30. df -h
  31. 2013-08-19 01:01:33
  32. free -m
  33. 2013-08-19 01:01:37
  34. ifconfig
  35. 2013-08-19 01:01:43
  36. history -w
  37. 2013-08-19 01:01:47
  38. history
复制代码

论坛徽章:
6
摩羯座
日期:2013-08-24 10:43:10狮子座
日期:2013-08-25 10:27:06天秤座
日期:2013-09-11 20:28:44午马
日期:2014-09-28 16:06:0015-16赛季CBA联赛之八一
日期:2016-12-19 13:55:0515-16赛季CBA联赛之天津
日期:2016-12-20 14:01:23
8 [报告]
发表于 2013-08-29 09:57 |只看该作者
sed e命令学习了。

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
9 [报告]
发表于 2013-08-29 10:06 |只看该作者
回复 7# seesea2517
  1. e
  2. This command allows one to pipe input from a shell command into pattern space. If a substitution was made, the command that is found in pattern space is executed and pattern space is replaced with its output. A trailing newline is suppressed; results are undefined if the command to be executed contains a nul character. This is a GNU sed extension.


  3. http://www.gnu.org/software/sed/manual/sed.html
复制代码
学习

论坛徽章:
1
射手座
日期:2014-03-10 14:24:52
10 [报告]
发表于 2013-08-29 10:56 |只看该作者
学习学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP