【发布时间】:2015-07-21 06:05:59
【问题描述】:
假设我有一个如下所示的日志文件:
06/30/2015 00:17:20.716 INFO 06z07mjBYxFpzs Matched Line
06/30/2015 00:17:20.723 INFO 06z07mjBYxFpzs Some Data xxyyzz
06/30/2015 00:17:20.735 INFO 06z07mdgC66vHc Matched Line
06/30/2015 00:17:20.759 INFO 06z07mGDQ9thtY Some Data xxyyzz
06/30/2015 00:17:20.755 INFO 06z07mdgC66vHc Matched Line
06/30/2015 00:17:20.784 INFO 06z07mdgC66vHc Some Data xxyyzz
06/30/2015 00:17:20.827 INFO 06z07n2q9S4g07 Some Data xxyyzz
06/30/2015 00:17:20.855 INFO 06z07mxt44CF03 Some Data xxyyzz
06/30/2015 00:17:20.861 INFO 06z07n5mxfYkHg Some Data xxyyzz
06/30/2015 00:17:20.873 INFO 06z07nm473brzB Some Data xxyyzz
06/30/2015 00:17:20.902 INFO 06z07mM059k0tZ Some Data xxyyzz
06/30/2015 00:17:20.970 INFO 06z07nx2lv9wzC Matched Line
06/30/2015 00:17:20.974 INFO 06z07nx2lv9wzC Some Data xxyyzz
06/30/2015 00:17:20.991 INFO 06z07ngwMW16zz Matched Line
06/30/2015 00:17:20.994 INFO 06z07ngwMW16zz Some Data xxyyzz
06/30/2015 00:17:21.085 INFO 06z07n42C6Qczx Some Data xxyyzz
06/30/2015 00:17:21.094 INFO 06z07nMgPJpPv1 Matched Line
06/30/2015 00:17:21.094 INFO 06z07mxR42tZzw Some Data xxyyzz
06/30/2015 00:17:21.094 INFO 06z07mWbfVCGD3 Some Data xxyyzz
06/30/2015 00:17:21.095 INFO 06z07nMgPJpPv1 Matched Line
06/30/2015 00:17:21.100 INFO 06z07nMgPJpPv1 Some Data xxyyzz
06/30/2015 00:17:21.123 INFO 06z07p0yBwLv0b Some Data xxyyzz
06/30/2015 00:17:21.132 INFO 06z07nSLzf66Hk Matched Line
06/30/2015 00:17:21.137 INFO 06z07nSLzf66Hk Some Data xxyyzz
我想做的是:
- 任何一行都包含
"Matched Line",我需要获取第4列中的唯一ID(例如06z07mjBYxFpzs),并且, - 搜索具有该唯一 ID + 文本
"Some Data xxyyzz"的其他行,并且, - 在控制台上打印具有 (unique id +
"Some Data xxyyzz") 匹配模式的行作为最终输出。
所以在这种情况下,输出应该是:
06/30/2015 00:17:20.723 INFO 06z07mjBYxFpzs Some Data xxyyzz
06/30/2015 00:17:20.784 INFO 06z07mdgC66vHc Some Data xxyyzz
06/30/2015 00:17:20.974 INFO 06z07nx2lv9wzC Some Data xxyyzz
06/30/2015 00:17:20.994 INFO 06z07ngwMW16zz Some Data xxyyzz
06/30/2015 00:17:21.100 INFO 06z07nMgPJpPv1 Some Data xxyyzz
06/30/2015 00:17:21.137 INFO 06z07nSLzf66Hk Some Data xxyyzz
我在这里谈论的文件是一个巨大的文件(约 200 GB 文件;有数百万条记录),位于共享服务器上,所以我无法运行需要大量时间的脚本或命令时间。
[编辑] - 目前通过 fgrep 通过在一个文件中打印来自 Matched Line 的唯一 ID 和在另一个文件中打印 Some Data xxyyzz 的唯一 ID;但寻找单行grep、awk 或sed 命令(无需创建多个文件到fgrep)
[EDIT 2] - 此输出不在文件中,而是一系列grep 和sort 的中间输出。
[EDIT 3] - 更新了示例输入(不是按顺序排列,而是混乱):
06/30/2015 00:17:21.094 INFO 06z07nMgPJpPv1 Matched Line
06/30/2015 00:17:20.716 INFO 06z07mjBYxFpzs Matched Line
06/30/2015 00:17:20.735 INFO 06z07mdgC66vHc Matched Line
06/30/2015 00:17:20.759 INFO 06z07mGDQ9thtY Some Data xxyyzz
06/30/2015 00:17:20.755 INFO 06z07mdgC66vHc Matched Line
06/30/2015 00:17:20.784 INFO 06z07mdgC66vHc Some Data xxyyzz
06/30/2015 00:17:20.827 INFO 06z07n2q9S4g07 Some Data xxyyzz
06/30/2015 00:17:20.855 INFO 06z07mxt44CF03 Some Data xxyyzz
06/30/2015 00:17:20.861 INFO 06z07n5mxfYkHg Some Data xxyyzz
06/30/2015 00:17:20.873 INFO 06z07nm473brzB Some Data xxyyzz
06/30/2015 00:17:20.723 INFO 06z07mjBYxFpzs Some Data xxyyzz
06/30/2015 00:17:20.902 INFO 06z07mM059k0tZ Some Data xxyyzz
06/30/2015 00:17:20.970 INFO 06z07nx2lv9wzC Matched Line
06/30/2015 00:17:20.974 INFO 06z07nx2lv9wzC Some Data xxyyzz
06/30/2015 00:17:20.991 INFO 06z07ngwMW16zz Matched Line
06/30/2015 00:17:21.085 INFO 06z07n42C6Qczx Some Data xxyyzz
06/30/2015 00:17:21.094 INFO 06z07nMgPJpPv1 Matched Line
06/30/2015 00:17:21.094 INFO 06z07mxR42tZzw Some Data xxyyzz
06/30/2015 00:17:20.994 INFO 06z07ngwMW16zz Some Data xxyyzz
06/30/2015 00:17:21.094 INFO 06z07mWbfVCGD3 Some Data xxyyzz
06/30/2015 00:17:21.095 INFO 06z07nMgPJpPv1 Matched Line
06/30/2015 00:17:21.100 INFO 06z07nMgPJpPv1 Some Data xxyyzz
06/30/2015 00:17:21.123 INFO 06z07p0yBwLv0b Some Data xxyyzz
06/30/2015 00:17:21.132 INFO 06z07nSLzf66Hk Matched Line
06/30/2015 00:17:21.137 INFO 06z07nSLzf66Hk Some Data xxyyzz
【问题讨论】:
标签: regex awk sed grep text-extraction