我有很多Java文件,我想知道我们通过

logger.isDebugEnabled(){
    logger.Debug("some debug message");
}

了解我们过度使用isdebugenabled函数的频率。我找到了我们打电话的次数
grep -r "isDebugEnabled" --include=*.java . | wc -l

但我想知道其中有多少是单行语句。有没有人有一个好的脚本来搜索这个或任何关于最有效的方法的想法?

最佳答案

不要使用grep,使用以下awk程序:

prev ~ /isDebugEnabled/ && $0 ~ /logger\.Debug\("[^"]"\)/ {
    print FILENAME ":" NR ": " $0
}
{
    prev = $0
}

此程序记住prev变量中的前一行,因此允许您一次比较两行。
要实际使用它,请写下:
find . -name '*.java' -print \
| xargs awk 'prev ~ /isDebugEnabled/ && /logger\.Debug\("[^"]"\)/ { print FILENAME ":" NR ": " $0 } { prev = $0 }'

关于java - 在文件中找到特定文本字符串后的5行的grep,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36122243/

10-12 03:41