将日期转换为特定格式并传递给unix中的文件

时间:2017-10-10 13:08:52

标签: unix

我在unix中有要求。我有一个文件,其工作流程的结束时间如下所示:

End Time:[Thu oct 05:12:12:12 2017]

我必须将此转换为mm-dd-yyy hh24:mi:ss并写入另一个文件。

请告诉我们该怎么做?

谢谢, 阿米特

1 个答案:

答案 0 :(得分: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调用,这可以在一个
  • 中处理
  • 或者就此而言,使用python,perl等可以更好地处理整个过程