2017-08-24 87 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' 

請注意,這仍然不是完美的,可以匹配無效的內容。如果你發現它還不夠好,你可以進一步微調模式到你想要的點。