2013-08-06 62 views
0

我試圖從下午5點到12點從日誌文件中獲取unix時間戳。Bash正則表達式時間戳匹配

這是我嘗試或目前正在使用的命令。

cat test.log | grep 130805"(1[7-9]|2[0-3])"???? 

我想獲得時間戳像下面的以下內容:

130805223755 
130805213755 
130805173755 

我似乎無法得到正確的模式匹配來獲取上述時間戳。提前諮詢您的幫助。

+0

你應該在CMD線,即'grep的「130805(1 [7-9]單引號圍繞您的REG-EX搜索目標| 2 0 -3])'test.log' ..如果你是,請更新你的問題來證明這一點。附: (您不需要/需要搜索目標中的dbl引號)。祝你好運。 – shellter

+1

在正則表達式中,'.'是任意字符,'?'表示前面的字符(或括號中的模式)是可選的。所以將'?'改爲'.',它應該沒問題。 (但是'awk'可以讓你使用'$ 1> = 130805170000 && $ 1 <13085230000',這樣會更容易理解。) – rici

+0

@shellter:這些引號沒什麼問題。 TIAS。 – rici

回答

0

我覺得報價是錯的,有????外面的報價會不會擴容呢?

這爲我工作:

grep -E '130805(1[7-9]|2[0-3])\d\d\d' 
+0

回覆:「有外引號會做外殼擴展不會嗎?」:是 - 文件名擴展 - 但在Bash中,有典型的配置,擴展將是一個沒有操作,除非有實際具有匹配名稱的文件。所以這是不好的做法,但恕我直言,這不太可能成爲一個問題。 – ruakh