awk - 如何让 grep 返回与字符串匹配的文件名而忽略其他字符串?
问题描述
我有多个要搜索错误的日志文件。这些文件还有一堆警告,它们被称为错误和其他误报。
现在,我有一个可怕的过程来查找我想要更仔细检查的文件:
grep error *.out | grep -v -e warning -e handle -e Sentry -e exitfuncs | \
awk -F: '{print $1}' | uniq
我怀疑这可能更简洁,但我不能让 grep 做到这一点。帮助?
输入:
file1.out
error. bad things happened.
error. warning, function deprecated
error. no really, this is bad.
file2.out
error. warning, function deprecated
error. warning, function deprecated
file3.out
error. warning, function deprecated
error. another bad thing here.
所需的输出:
file1.out
file3.out
当前命令的解释: grep error *.out 从示例文件中返回每一行:
file1.out: error. bad things happened.
file1.out: error. warning, function deprecated
...
file3.out: error. another bad thing here.
grep -v -e warning 删除警告。awk -F:将字段分隔符设置为 : 并返回输入的第一个字段,即文件名。uniq 对文件名进行重复数据删除,因此 file1.out 不会出现两次。
解决方案
grep
是为了做g/re/p
——仅此而已。对于比这更复杂的事情,只需使用 awk。您可以通过调用 awk 来替换整个命令行并打印文件名:
awk -F':' '/error/ && !/warning|handle|Sentry|exitfuncs/ && !seen[FILENAME,$1]++{print FILENAME, $1}' *.out
但可能有更好的方法取决于您的输入是什么样的,我们还没有看到您想要的输出,所以我只是猜测您想要uniq
做什么 wrt 文件名加上错误值和 idk 您想要的整体输出看起来像...
推荐阅读
- wpf - WPF telerik GridView 聚合不会更新,直到焦点离开网格视图字段
- rotation - Google Cloud Storage - 处理来自环境外部的旋转密钥
- performance - 带有大数据的 QAreaSeries 的 QChart 非常慢
- javascript - React Axios 发布请求在 4 分钟后超时
- visual-studio-code - 在 VSCode/GhostScript 中调试 PostScript
- openiddict - OpenIddictAuthorizations.CreationDate is always null
- python - 在 R 中使用 Xpath 提取具有默认命名空间的 XML 元素
- database - 使用带有python和flask的文本框从数据库中获取数据
- java - 在spring boot中contextLoads测试时Liquibase运行
- ios - 当我尝试在手机或模拟器上启动我的应用程序时,Xcode 错误无法安装错误