我一直在使用 grep 运行一些 PII 扫描,虽然它找到了结果,但确实发现了太多误报。
有没有办法可以告诉 grep 不要触发文件匹配,除非它包含其他数据?
例如,我可以告诉它不要在 SSN 的正则表达式上触发警报,除非文件在文件的其他地方包含像“ssn”或“社会安全号码”这样的文本?
答案1
grep -lZ ssn files_to_search | xargs -0 grep what_to_search_for
答案2
当然,只需将第一个输出通过管道传输到另一个 grep。grep 查找 foo,然后 grep 查找 bar,这样你的输出将只有包含 foo 和 bar 的行和酒吧。
grep SSN filename.txt | grep -e "ssn|social security number"
这只会命中大写的 SSN,然后传递任何带有 sss 或社会安全号码的行。小写。添加 -i 以表示任何大小写。如果您确实想要 SSN 和 ssn,请尝试此操作;
grep -i SSN filename.txt | grep social.security.number
我喜欢的另一个是只显示不有 bar。对 foo 执行 Grep,然后 grep -v bar。只有带有 foo 的行,才会执行不是有吧。使用 GNU grep 2.5.4视窗