mancha 发表于 2018-8-16 12:59:28

shell问题案例及三剑客awk与sed解决实践

20150418周末小题  
原始数据:
  
17/Apr/2015:09:29:24 +0800
  
17/Apr/2015:09:30:26 +0800
  
17/Apr/2015:09:31:56 +0800
  
18/Apr/2015:09:34:12 +0800
  
18/Apr/2015:09:35:23 +0800
  
19/Apr/2015:09:23:34 +0800
  
19/Apr/2015:09:22:21 +0800
  
20/Apr/2015:09:45:22 +0800
  
期望结果:
  
2015-04-17 09:29:24+0800
  
2015-04-17 09:30:26+0800
  
2015-04-17 09:31:56+0800
  
2015-04-18 09:34:12+0800
  
2015-04-18 09:35:23+0800
  
2015-04-19 09:23:34+0800
  
2015-04-19 09:22:21+0800
  
2015-04-20 09:45:22+0800
  

  
解决实践:来自运维21期悠久之翼 群内分享
  
# cat oldboy.txt
  
17/Apr/2015:09:29:24 +0800
  
17/Apr/2015:09:30:26 +0800
  
17/Apr/2015:09:31:56 +0800
  
18/Apr/2015:09:34:12 +0800
  
18/Apr/2015:09:35:23 +0800
  
19/Apr/2015:09:23:34 +0800
  
19/Apr/2015:09:22:21 +0800
  
20/Apr/2015:09:45:22 +0800
  

  

  
# awk '{sub(/Apr/,"04");split($0,array,"[/: ]") ;printf("%s-%s-%s %s:%s:%s%s\n",array,array,array,array,array,array,array)}' oldboy.txt
  
2015-04-17 09:29:24+0800
  
2015-04-17 09:30:26+0800
  
2015-04-17 09:31:56+0800
  
2015-04-18 09:34:12+0800
  
2015-04-18 09:35:23+0800
  
2015-04-19 09:23:34+0800
  
2015-04-19 09:22:21+0800
  
2015-04-20 09:45:22+0800
  
# sed -nr 's#(..)/(...)/(....):(..):(..):(..) (.*)#\3-\2-\1 \4:\5:\6\7#;s#Apr#04#p' oldboy.txt
  
2015-04-17 09:29:24+0800
  
2015-04-17 09:30:26+0800
  
2015-04-17 09:31:56+0800
  
2015-04-18 09:34:12+0800
  
2015-04-18 09:35:23+0800
  
2015-04-19 09:23:34+0800
  
2015-04-19 09:22:21+0800
  
2015-04-20 09:45:22+0800


页: [1]
查看完整版本: shell问题案例及三剑客awk与sed解决实践