簡體   English   中英

grep:匹配除單詞以外的所有內容

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM