2017-10-10 45 views

回答

1

喜欢的东西

grep input_filename -e "End Time:" | sed -E 's/End Time:\[\w{3}\s(\w{3})\s([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\s([0-9]{4}).*$/\1-\2-\6 \3:\4:\5/' | sed 's/jan/01/ig; s/feb/02/ig; s/mar/03/ig; s/apr/04/ig; s/may/05/ig; s/jun/06/ig; s/jul/07/ig; s/aug/08/ig; s/sep/09/ig; s/oct/10/ig; s/nov/11/ig; s/dec/12/ig' > output_filename 

这被分成三个命令。首先是grep提取你所需要的时间就行了。二是sed重新安排的日期到输出格式,但要注意一个月仍然是一个字符串。第三个命令是另一个sed呼叫,这个替换月份名称与号码。

注意事项:

  • 上述正则表达式是相当严格,简单的偏差会失败
  • 无需正则表达式的东西分成两个sed调用,这可以在一个
  • 或处理就此而言,整个过程可以更优雅地蟒蛇,perl的,等处理
+0

非常感谢@BurnsBA。让我检查一次。 – user3901666