簡體   English   中英

在命令行中使用正則表達式的grep

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

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