2016-11-09 200 views
-1

我想看到使用下面的命令至15:00之間所有條目進入到15:45 11月9日以顯示兩個時間之間的數據:如何使用grep命令

grep -E "Nov 9 15:00|Nov 9 15:45" /mac1/user1log 

但是這並不表明15:00至15:45,但只有15:00和15:45

我知道awk是更好的,但我需要運行這個從bash腳本和awk不能從bash腳本運行!

+2

是什麼讓你覺得'awk'不能從bash腳本運行? – RJHunter

+1

該文件是按日期排序還是隨機排列的?你可以給例子輸入和期望的輸出? – dawg

+0

@RJHunter,因爲我試圖從bash腳本運行它,但它沒有運行,我對'awk'不是很熟悉。 –

回答

0

爲了實現你正在嘗試使用grep(更具體地說,擴展正則表達式選項),你需要提供一個正則表達式。正則表達式有一定的侷限性,但對於這種特定的場景,我想出了一個簡單的答案。

bash>grep -E "Nov 9 15:[0123][0-9]|Nov 9 15:[4][0-5]" testFile 

TESTFILE的內容如下:

Nov 9 15:02 
Nov 9 15:01 
Nov 9 15:09 
Nov 9 15:39 
Nov 9 15:49 
Nov 9 15:59 

但是,這應該可以正常工作了你提出的情況。

bash>grep -E "Nov 9 15:[0123][0-9]|Nov 9 15:[4][0-5]" testFile 
Nov 9 15:02 
Nov 9 15:01 
Nov 9 15:09 
Nov 9 15:39 

表達式的第一部分與從11月9日15時00什麼15時39分和所述第二部分從11月9日15點40匹配任何到15:45。

編輯:它的語法部分只是標準的正則表達式數值範圍。 [0-9]意味着它將匹配任何包含0,1,2或3的任何其他數字,然後是來自0-9(01,02,03,39等)的任何其他數字,而[4] [0-5 ]匹配4,然後是0到5之間的任何數字。

+0

非常感謝!語法,所以我知道它是如何工作的? –

+0

我已經編輯了包含快速解釋的答案。我可以推薦閱讀http://www.regular-expressions.info/quickstart.html? –

+0

可以簡化爲'grep -E'Nov 9 15:([0-3] [0-9] | [4] [0-5])'' – Sundeep