1
你如何使用grep來做一個像ABC='123'
這樣的模式的文本文件搜索?如何做一個grep正則表達式搜索單引號?
我目前使用:
grep -rnwi some/path -e "ABC\s*=\s*[\'\"][^\'\"]+[\'\"]"
但這隻能找到像ABC="123"
文本。它會漏掉任何使用單引號的實例。我的正則表達式有什麼問題?
你如何使用grep來做一個像ABC='123'
這樣的模式的文本文件搜索?如何做一個grep正則表達式搜索單引號?
我目前使用:
grep -rnwi some/path -e "ABC\s*=\s*[\'\"][^\'\"]+[\'\"]"
但這隻能找到像ABC="123"
文本。它會漏掉任何使用單引號的實例。我的正則表達式有什麼問題?
您正在使用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'
爲BRE ,你需要使用'\ +'或者用'-E' op使用當前的正則表達式使用ERE – Sundeep
@Sundeep'+'根本不在BRE中,但GNU grep BRE支持它作爲擴展。 –
@BenjaminW。因爲OP使用'-r'我推定GNU grep – Sundeep