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