grep:匹配除了单词之外的所有内容

时间:2016-04-06 18:42:20

标签: regex grep

我发现有关正则表达式的一些问题,但我似乎无法做到这一点。我想在我的模式中包含特定字符串的排除。我的用例是查找python文件中的所有行,这些行定义了具有除object以外的超类的类。所以例如:

class Class1(Superclass): #match
class Class2(othersuperclass, Superclass): #match
class Class3(object): #no match

我可以使用以下正则表达式来匹配定义类的行。我确定它不是最佳的,但它是我拥有的并且有效:

grep -n '^[[:space:]]*class[[:space:]][[:space:]]*[[:alpha:]][[:alnum:]]*[[:space:]]*(.*):' *

但是我无法弄清楚如何排除有"对象"在parens里面。

编辑:我应该更清楚。我试图在我的文件系统中递归搜索文件。目前我在命令行中使用grep,但如果有更好的命令行实用程序,我很高兴听到它。

1 个答案:

答案 0 :(得分:0)

这将做你到目前为止告诉我们的事情:

$ awk '/^[[:blank:]]*class[[:blank:]]+[[:alpha:]_][[:alnum:]_]*[[:blank:]]*\(.*\):/ && !/\(.*object.*\)/' file
class Class1(Superclass): #match
class Class2(othersuperclass, Superclass): #match

但请注意您未包含在样本输入/输出中的其他情况。