仅包含一次文件名的 Grep 摘要

我试图找出一种方法来总结 grep 结果并用文件名显示结果一次而不是每一行。我知道 ripgrep 有这个功能。我浏览了 grep 手册页,但找不到类似的内容。

我有一个 python 脚本来处理 ripgrep 的结果。如果我能得到类似的结果,希望为 grep 重用相同的脚本

关于我们如何实施的任何建议。

当前的grep输出

\grep  -r "else" .                                                                                                                                             
./historyChecker.py:        else:
./historyChecker.py:    else:
./historyChecker.py:    else:
./historyChecker.py:    else:

我想得到的输出

historyChecker.py
77:#check if RG is installed else exit
84:        else:
102:    else:
148:    else:
225:    else:
w169703048 回答:仅包含一次文件名的 Grep 摘要

grep 没有执行此操作的选项,因此您需要自己循环打印文件名。

find . -type f | while read -r filename; do
    if grep -q "else" "$filename"; then 
        echo "$filename"
        grep -n "else" "$filename"
    fi
done

不幸的是,这需要读取每个文件两次:首先检查是否有匹配项,以便打印文件名,然后打印所有匹配项。另一种方法是将 grep 输出写入临时文件,然后检查该文件是否为非空并在 $filename 之前打印它。

本文链接:https://www.f2er.com/7683.html

大家都在问