【问题标题】:Regex to Find empty functions in js File using grep正则表达式使用 grep 在 js 文件中查找空函数
【发布时间】:2021-03-19 16:49:19
【问题描述】:

我想在几个文件中找到类似的空函数

fLocalEvent(){

}

我想用 grep 查找

我试过了:

grep -Rlz "function fLocalEventoBotoes.*[\n\s]*?}" sob/SOB910C.js
grep -Rlz "fLocalEventoBotoes\((?:(?!\)\s*\{).)*\)\s*\{\s*\}" sob/SOB910C.js - return -bash: !\: event not found

【问题讨论】:

  • 您似乎在使用 PCRE。使用grep -P 切换到此正则表达式方言。
  • grep 是一种面向行的环境类型。您需要一个面向块的正则表达式,例如 PerlRubyPythonawk 来执行此操作。

标签: regex linux function grep


【解决方案1】:

你最好使用 Perl 这样的东西:

echo '
fLegit1(x){ something }

empty1(){}

legit2(){ something }

fLocalEvent(){

}' | perl -0777 -lnE 'say $1 while (/(\w+\(\s*\)\s*{\s*})/g)'

打印:

empty1(){}
fLocalEvent(){

}

使用 GNU grep,您可以使用 -Pzo 开关来使用相同的正则表达式、忽略行尾并仅打印匹配的部分:

echo '
fLegit1(x){ something }

empty1(){}

legit2(){ something }

fLocalEvent(){

}' | grep -Pzo '\w+\(\s*\)\s*{\s*}\s*'

# same output...

【讨论】:

    【解决方案2】:

    这个 grep 应该可以工作:

    grep -Poz '\w+\(\){\s*}\n?' data
    

    【讨论】:

    • 这将失败,1) f( ){ } 或 2) f(){}
    猜你喜欢
    • 2021-06-16
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多