linux - Grep:与 -e 和 -o 选项一起使用
问题描述
需要一次性解析大日志文件并打印找到的请求的id、address和service_name。问题是service_name在请求正文中相当大。
如果我列出所有带有-e
选项的模式 -
grep -e 'ID: [0-9]\+' -e 'Address: .*' -e ':Body><[^ ]*'
将打印完整的请求正文。
需要的是
grep -e 'ID: [0-9]\+' -e 'Address: .*' -o ':Body><[^ ]*'
或者
grep -o 'ID: [0-9]\+' -o 'Address: .*' -o ':Body><[^ ]*'
仅打印请求正文中作为服务名称的第一个单词;
但在这种情况下grep: :Body><[^ ]*: No such file or directory
收到错误
UPD:使用-oe
和正则表达式的解决方案有效,但结果-o
显着减慢了操作
解决方案
如果没有看到您的日志,很难完全理解您的示例将返回什么。您可以尝试 -Eo 看看这是否有助于获得您想要的东西。您可能需要相应地调整正则表达式。-E 至少应该解决您收到的“grep: :Body><[^ ]*: No such file or directory”错误。
grep -Eo 'ID: [0-9]\+' -Eo 'Address: .*' -Eo ':Body><[^ ]*' myLog.log
推荐阅读
- sql-server - 如何从 SQL SERVER 的结果集中排除原始数据?
- java - Android Studio 为什么我每次都必须重新安装 sdk?
- electron - 在 Electron 中创建 exe 之外的文件夹
- android - 在 Android 上的 SQLite 数据库中实现相机图像存储的问题
- javascript - 选择特定选项时显示 div
- eclipse - 即使我在 Eclipse IDE 中安装了 Windowbuilder 也无法创建 JFrame
- neural-network - OCR 软件或自制 CNN 用于文档处理?
- ubuntu - vscode 没有运行并给出分段错误
- c# - 将“03/2020”之类的字符串解析为 DateTime 变量
- react-native - 使用 react native 的可拖动组件的故障 - 使用 Animated 和 PanResponder 实现