如何对单引号执行grep正则表达式搜索?

时间:2017-02-09 01:40:03

标签: regex bash grep pattern-matching

如何使用grep对ABC='123'

等模式进行文本文件搜索

我目前正在使用:

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

但这只会找到ABC="123"这样的文字。它错过了使用单引号的任何实例。我的正则表达式有什么问题?

1 个答案:

答案 0 :(得分:1)

您正在使用PCRE。所以,你需要-P标志。所以,使用这个:

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

我们在字符类中不需要\\单引号。所以,你的正则表达式也可以写成:

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

输入文件:

ABC="123"
ABC='123'

使用您的PCRE运行grep

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

输出:

ABC="123"
ABC='123'