我有一个日志文件,其中包含以下数据:
2019-02-11 00:05:58.241 [exec-178] Start request
2019-02-11 00:05:58.242 [exec-178] customer_name
2019-02-11 00:05:58.243 [exec-178] other process
2019-02-11 00:05:58.244 [exec-178] other process
2019-02-11 00:05:58.245 [exec-178] results
2019-02-11 00:05:58.246 [exec-178] End request (13ms)我想使用一个grep命令来捕获'customer_name‘和'End请求’。我一直在尝试使用grep -E "[0-9]{2,4}ms,但它没有提供预期的输出。
预期产出:
2019-02-11 00:05:58.242 [exec-178] customer_name
2019-02-11 00:05:58.246 [exec-178] End request (13ms)发布于 2019-02-14 11:15:12
这是有可能的grep -E和模式,您的grep是由一个管道标志。
[root@server ~]# grep -Ei "customer_name|end request" file
2019-02-11 00:05:58.242 [exec-178] customer_name
2019-02-11 00:05:58.246 [exec-178] End request (13ms)
[root@server ~]# 从man grep中提取:
-E,- extended将模式解释为扩展正则表达式(ERE,见下文)。-i,--忽略--忽略模式和输入文件中的大小写区分。
发布于 2019-02-14 10:42:13
如果您只希望它返回位于不同行上的确切字符串:
egrep -o "customer_name|End request" logfile输出:
customer_name
End request如果您希望它返回整行:
egrep "customer_name|End request" logfile输出
2019-02-11 00:05:58.242 [exec-178] customer_name
2019-02-11 00:05:58.246 [exec-178] End request (13ms)https://unix.stackexchange.com/questions/500589
复制相似问题