2017-08-24 144 views
1

使用bash编写脚本。我试图通过线条看上去在文件中指定日期格式:解析特定日期格式的行?

date +"%a %b %d %T %Z %Y" 

例如,如果线路是

/foo/bar/foobar this 12 is 411 arbitrary stuff in the line Wed Jun 10 10:10:10 PST 2017 

我想获得周三06月10日10:10:10 PST 2017.

任何方式来搜索特定的日期格式?

+0

行可以包含多个日期子字符串? – RomanPerekhrest

+0

它只会包含一个日期。在功能上,脚本只会检查文件的第一行和最后一行,因为这将是相关日期的唯一位置。不过,我说这个问题要更开放一些。 – Racehorse35

回答

1

我不确定你是否同意这种方法。但如果这是一些快速,非重复性的工作,我不会寻找一个完美的解决方案来处理所有情况。

首先,您可以使用以下过于通用的模式来匹配您想要的零件。

cat file | sed -n 's/.*\(... ... .. ..:..:.. ... ....\).*/\1/p' 

然后,您可以进一步限制匹配,如您所需。

例如

cat file | sed -n 's/.*\([a-Z]\{3\} [a-Z]\{3\} [0-3][0-9] [0-2][0-9]:[0-5][0-9]:[0-5][0-9] [A-Z]\{3\} [0-9]\{4\}\).*/\1/p' 

请注意,这仍然不是完美的,可以匹配无效的内容。如果你发现它还不够好,你可以进一步微调模式到你想要的点。