2012-02-06 149 views
2

我有一個文件,我希望grep所有行不以時間戳開始。我試着用下面的正則表達式,但它沒有工作:非運算符在正則表達式

cat myFile | grep '^(?!\[0-9\]$).*$' 

其他任何建議或東西,我可能是錯在這裏做什麼?

+4

*沒有工作* ...煙從電腦裏出來了嗎? – 2012-02-06 19:12:20

+0

它屬於http://unix.stackexchange.com/,但在off主題選項之間找不到它。投票支持http://superuser.com/ – BlackBear 2012-02-06 19:19:31

回答

7

爲什麼不直接使用grep -v選項這樣的否定:

grep -v "<pattern>" file 

比方說,你想用grep在那些沒有評論 shell腳本的所有行(沒有#在啓動)那麼你可以使用:

grep -v "^\s*#" file.sh 
+1

這裏唯一的*正確*答案:不要試圖否定模式,否定匹配結果。 +1 – 2012-02-06 19:25:54

0

你不需要not操作,只是使用grep,因爲它是最容易使用:發現一個規律:

grep '^[0-9]' myFile 
0

試試這個:

cat myFile | grep '^\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d' 

這裏假設你的時間戳是模式dddd-dd-dd dd:dd:dd,但如果它是其他內容,則將其更改爲與時間戳匹配的內容。

注意:除非你使用某種CMD鏈的,grep pattern file是一個簡單的語法

BTW:你使用雙負的讓我不確定,如果你想時間戳線或你想要的非時間戳行。