2015-11-14 64 views
5

我的目標是將格式爲「12/Nov/2015:23:28:22」的apache日誌中的日期轉換爲時代格式。這可以使用date命令完成,還是需要解析和提取信息?將apache日誌格式轉換爲bash中的紀元

+0

這是一個相當離奇的日期時間格式,並且我試過的'date'都不能解析它,儘管它們都不在CentOS 7上,但其中一個是GNU日期,這正是我想象中的CentOS使用的日期。 – blm

+0

我同意。雖然這是我的apache日誌的格式。我很驚訝的日期沒有辦法提供自定義格式的日期 date +「%d /%b /%Y:%H:%M:%S」-s「12/Nov/2015:23:28:22「 – user2704766

+0

是的,我知道所有關於必須解析日誌的奇怪格式。 :-)我同意,'date'可以讓你指定輸出格式,如果你也可以指定輸入格式,那將會很好。 @EricRenouf提供了一個很好的解決方案,但將日期混合到'date'格式的日期中。 – blm

回答

8

看起來我的date命令想要-而不是/日期部分之間和那個由時間部分分隔的空間。所以我用sed做像這樣的轉換:

date -d "$(echo '12/Nov/2015:23:28:22' | sed -e 's,/,-,g' -e 's,:, ,')" +"%s" 
+0

謝謝,這個作品很棒! – user2704766

0

您可以使用包dateutils

dateutils.strptime -i "%Y%m%dT%H%M%S" -f "%d.%m.%Y %H:%M:%S" "20170411T172238"

其中-i是你的輸入格式和-f輸出格式