2012-02-06 101 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:你使用双负的让我不确定,如果你想时间戳线或你想要的非时间戳行。