2017-02-09 103 views
1

你如何使用grep來做一個像ABC='123'這樣的模式的文本文件搜索?如何做一個grep正則表達式搜索單引號?

我目前使用:

grep -rnwi some/path -e "ABC\s*=\s*[\'\"][^\'\"]+[\'\"]" 

但這隻能找到像ABC="123"文本。它會漏掉任何使用單引號的實例。我的正則表達式有什麼問題?

+0

爲BRE ,你需要使用'\ +'或者用'-E' op使用當前的正則表達式使用ERE – Sundeep

+0

@Sundeep'+'根本不在BRE中,但GNU grep BRE支持它作爲擴展。 –

+0

@BenjaminW。因爲OP使用'-r'我推定GNU grep – Sundeep

回答

1

您正在使用PCRE。所以,你需要-P標誌。所以,使用此:

grep -rnwi some/path -P "ABC\s*=\s*[\'\"][^\'\"]+[\'\"]" 

我們不需要對字符類內單引號\\。所以,你的正則表達式也可以寫爲:

"ABC\s*=\s*['\"][^'\"]+['\"]" 

輸入文件:

ABC="123" 
ABC='123' 

運行grep與PCRE:

grep -P "ABC\s*=\s*['\"][^'\"]+['\"]" input.txt 

輸出:

ABC="123" 
ABC='123'