[英]grep with regular expression in command line
我對使用正則表達式(最好遞歸地)在當前目錄中找到%CHILD_NAME%,%PARENT_NAME%,%ADDRESS%這樣的模式感興趣,以下是我正在使用的grep命令
grep -r "(.[A-Z]+[_]*[A-Z]+%)" *
當我在http://www.regexr.com上使用相同的正則表達式時,它確實與%CHILD_NAME%匹配,但我的命令無法在當前目錄或子目錄中的任何文件中找到此模式。
默認情況下,grep使用基本的正則表達式,而+
等元字符會失去其含義,需要轉義。 刪除捕獲組( )
,轉義+
量詞,並使用實際的%
代替.
grep -r '%[A-Z]\+[_]*[A-Z]\+%' *
雖然,您可能會使用以下內容:
grep -r "%[A-Z_]\+%" *
首先,您的正則表達式太籠統了:匹配CHILD_NAME%
(前面也沒有%
)。 更好的正則表達式是:
"%[A-Z]+(_[A-Z]+)*%"
接下來,建議使用帶有-P
標志的正則表達式的perl
解釋:
grep -r -P "%[A-Z]+(_[A-Z]+)*%" .
您也可以在此處使用-E
標志(擴展模式)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.