我正在尝试调试我经常用来在文件系统中搜索的命令。我有一个外部文件,其中包含我想要匹配的正则表达式列表。
示例[真实文件有数百个术语]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