如何返回 grep 命令的匹配表达式

如何返回 grep 命令的匹配表达式

我正在尝试调试我经常用来在文件系统中搜索的命令。我有一个外部文件,其中包含我想要匹配的正则表达式列表。

示例[真实文件有数百个术语]cat terms.txt

cat\|dog\|mouse\|frog\|horse

现在我遇到一个问题,我相信我的一个术语让我头疼,并且每一行都返回 true。我希望能够找出哪个术语经常受到攻击,这样我就可以重新定位它以使其更准确。我将其与该实用程序结合使用strings

find /data/*/** -type f -print0 | xargs -0 strings -f -t d | grep -w "$(terms.txt)"

返回格式如下

/data/animals/felines.txt: 6 tiger cat

我希望看到类似于将 terms.txt 文件中匹配的表达式附加到行尾的位置。如果不构建某种 bash 脚本,这可能吗?

/data/animals/felines.txt: 6 tiger cat - matched expression "cat"

答案1

grep-o选项不会产生您正在寻找的输出,但它应该可以帮助您找到问题;它只输出每行的匹配部分,如果一行的多个部分匹配,它会分别输出每个部分(在不同的行上):

/data/animals/felines.txt:cat

相关内容