正则表达式中不是运算符

时间:2012-02-06 19:10:30

标签: regex bash shell grep

我有一个文件,我希望将所有不以时间戳开头的行打开。我尝试使用以下正则表达式,但它不起作用:

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

我在这里可能做错的任何其他建议或事情?

3 个答案:

答案 0 :(得分:8)

为什么不简单地使用像这样的grep -v选项来否定:

grep -v "<pattern>" file

假设您想要在shell脚本中grep所有未注释(在启动时没有#),然后您可以使用:

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

答案 1 :(得分:0)

您不需要not运算符,只需使用grep,因为它最容易使用:查找模式:

grep '^[0-9]' myFile

答案 2 :(得分: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:你使用双阴影让我不确定你是否想要时间戳行,或者你想要非时间戳行。