代码之家  ›  专栏  ›  技术社区  ›  Teju Priya

从日志文件中提取关键字

  •  2
  • Teju Priya  · 技术社区  · 6 年前

    我需要根据grep命令过滤关键字。下面是我的日志文件。

    2018-03-20T15:07:33,432 INFO  [26b604b7-43cf-4bdc-9ffb-6bae323f8fc5 HiveServer2-Handler-Pool: Thread-55([])]: ql.Driver (Driver.java:compile(429)) - Compiling command(queryId=hive_20180320150733_cb6c088a-2b53-4826-891a-2dd905b16cef): SELECT * FROM table limit 5
    

    我需要像这样提取特定的查询。

    SELECT * FROM table limit 5
    

    我试过这样

    grep -oE 'SELECT * FROM [a-zA-Z][a-zA-Z0-9_]*' hive-server2.log
    

    也用awk试过

    awk 'BEGIN{ print "" }
     /Executing command\(queryId/{ sub(/.*queryId=[^[:space:]]+: /,""); q=$0 }
     /s3:\/\//{ print "," q }' OFS=',' hive-server2.log
    

    对我来说什么都不管用。任何帮助都将不胜感激。

    2 回复  |  直到 6 年前
        1
  •  2
  •   RavinderSingh13    6 年前

    如果您的实际输入文件与所示示例相同,则以下内容可能会对您有所帮助。

    awk '{sub(/.*SELECT/,"SELECT")} 1'  Input_file
    

    解决方案2:

    awk 'match($0,/SELECT.*/){print substr($0,RSTART,RLENGTH);}'  Input_file
    
        2
  •  1
  •   shaiki siegal    6 年前

    sed公司

    用字符串“SELECT”将前面的所有字符串更改为SELECT(包括SELECT)

      sed -n 's/.*SELECT/SELECT/p'  file
    

    格雷普

    您可以运行此(显示找到的regexp):

     grep -oE 'SELECT .*' file