解析特定日期格式的行?

时间:2017-08-24 13:48:48

标签: bash parsing scripting

使用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

我希望获得2017年6月10日星期三10:10:10太平洋标准时间。

有什么方法可以搜索特定的日期格式吗?

1 个答案:

答案 0 :(得分:2)

我不确定您是否同意这种做法。但如果这是一些快速,非经常性的工作,我不会寻找一个可以处理所有场景的完美解决方案。

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

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

然后你可以根据需要进一步限制匹配。

E.g。

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'

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