【问题标题】:How to do a grep regex search for single-quotes?如何对单引号进行 grep 正则表达式搜索?
【发布时间】:2017-06-26 21:05:49
【问题描述】:

你如何使用 grep 来搜索 ABC='123' 这样的模式?

我目前正在使用:

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

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

【问题讨论】:

  • 对于 BRE,您需要使用 \+ 或使用带有 -E 选项的当前正则表达式来使用 ERE
  • @Sundeep + 根本不在 BRE 中,但 GNU grep BRE 作为扩展支持它。
  • @BenjaminW。因为 OP 使用了 -r 我假设 GNU grep

标签: regex bash grep pattern-matching


【解决方案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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    相关资源
    最近更新 更多