[英]grep: match everything except a word
我發現了幾個關於正則表達式的一般問題,但我似乎無法完成這項工作。 我想在我的模式中包含對特定字符串的排除。 我的用例是在 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:]]*(.*):' *
但我不知道如何排除括號內有“對象”的行。
編輯:我應該更清楚。 我正在嘗試在我的文件系統中遞歸搜索文件。 目前我正在從命令行使用grep
,但如果有更好的命令行實用程序,我很高興聽到它。
這將執行您迄今為止告訴我們的內容:
$ awk '/^[[:blank:]]*class[[:blank:]]+[[:alpha:]_][[:alnum:]_]*[[:blank:]]*\(.*\):/ && !/\(.*object.*\)/' file
class Class1(Superclass): #match
class Class2(othersuperclass, Superclass): #match
但請注意您尚未包含在示例輸入/輸出中的其他情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.