• 如何使用grep 等命令快速的在日志中找到自己需要的内容


    虽然使用linux也有好几年了,但是服务器端开发的活儿正经来算才干不到一年。

    一直没有需求和机会会去花大量的时间排查日志啥的,直到我摊上了大事t t,写的代码在线上出了bug需要排查问题。

    grep可能是这两天我使用得最多的命令了,下面是grep的一些基本用法。

    grep [-acinv] [--color=auto] [-A n] [-B n] '搜寻字符串' 文件名
    参数说明:
    -a:将二进制文档以文本方式处理
    -c:显示匹配次数
    -i:忽略大小写差异
    -n:在行首显示行号
    -A:After的意思,显示匹配字符串后n行的数据
    -B:before的意思,显示匹配字符串前n行的数据
    -v:显示没有匹配行-A:After的意思,显示匹配部分之后n行-B:before的意思,显示匹配部分之前n行
    --color:以特定颜色高亮显示匹配关键字


    一般我们很容易写出这样的语句。
    grep '123' test.txt

    这表示我们需要从test.txt这个文件中查找'123'这个字符串。同时将返回匹配到的整行数据。

    那么通常我的匹配需求里面,动不动就是要把某一段数据拿出来。例如

    2016-04-26T20:13:09.012934+08:00 ERROR ip[107309309] /logistics/123[-]: {"tid":"20160425-177561416","company_name":"其他","out_sid":"123124123C16042600320"} -------> 2001 该订单不允许设置物流:
    2016-04-26T21:08:22.172071+08:00 ERROR ip[107309309] /logistics/123[-]: {"tid":"20160425-177560652","company_name":"其他","out_sid":"1231231C16042504184"} -------> 2001 该订单不允许设置物流:
    2016-04-26T21:08:24.293799+08:00 ERROR ip[107309309] /logistics/123[-]: {"tid":"20160425-177560652","company_name":"其他","out_sid":"13123C16042504184"} -------> 2001 该订单不允许设置物流:
    2016-04-26T21:48:42.676001+08:00 ERROR ip[107309309] /logistics/123[-]: {"tid":"20160417-177400674","company_name":"其他","out_sid":"1231C16041702542"} -------> 2001 该订单不允许设置物流:
    2016-04-26T21:48:44.528692+08:00 ERROR ip[107309309] /logistics/123[-]: {"tid":"20160417-177400674","company_name":"其他","out_sid":"1221C16041702542"} -------> 2001 该订单不允许设置物流:

    我只需要得到里面tid后面的一长串订单号数据。就需要使用到前面 介绍到的-o 这个option。这个option的作用是只会将匹配到的部分返回给我们

    grep '/logistics/123' err.log-20160427 | grep -o '"2016.{14}' 

    这里我先抓到符合条件的缩小了范围,然后使用管道继续抓去更精确的数据。利用这个方法我们可以逐渐使用管道缩小抓取的范围。如果你觉得一次性拼一个正则表达式有点难度,那么就利用管道符逐渐缩小范围,直到抓取到想要的数据。 例如我这里还想要计算抓到的条数可以用两种选择

    grep -c '/logistics/send' err.log-20160427 | grep -o '"2016.{14}'
    grep '/logistics/send' err.log-20160427 | grep -o '"2016.{14}' | wc -l

    一个是使用grep自带参数。第二个是直接利用管道符然后用wc -l来计算有多少行,非常灵活。

    还有更多的灵活用法,可以多用用自然就熟悉该怎么写了。

  • 相关阅读:
    GoldenGate V11.1数据复制限制
    OGG切换步骤
    GoldenGate 1403错误解决方法
    logsource and ALO
    使用HANDLECOLLISIONS的几个场景
    Goldengate参数规范
    GoldenGate 进程
    Goldengate进程的合并与拆分规范
    url的组成结构信息
    Python中容器指的是什么?
  • 原文地址:https://www.cnblogs.com/piperck/p/5440516.html
Copyright © 2020-2023  润新知