【问题标题】:Find lines that contain certain text, and print what follows that text查找包含特定文本的行,并打印该文本后面的内容
【发布时间】:2018-03-23 18:30:54
【问题描述】:

我正在尝试通过这个 shell 命令从 Hive 输出中获取 SQL 语句:

tail -f /var/log/hive/hiveserver2.log | grep "Parsing command"

但是,这给了我完整的线路:

2018-03-18 03:07:57,689 INFO  [HiveServer2-Handler-Pool: Thread-13816]: parse.ParseDriver (ParseDriver.java:parse(190)) - Parsing command: SELECT * from table

我想 grep 但删除前面部分以显示此内容:

SELECT * from table

有没有办法通过搜索Parsing command: 并在该字符串之后保留该行的一部分来在单行中执行此操作?

【问题讨论】:

    标签: linux bash shell sed grep


    【解决方案1】:

    您只需将grepawk 交换即可获得您正在寻找的行的子集:

    tail -f /var/log/hive/hiveserver2.log |
    awk -F "Parsing command: " '{print $2}'
    

    SELECT * from table
    

    【讨论】:

      【解决方案2】:
      tail -f /var/log/hive/hiveserver2.log | sed -n '/Parsing command/{s/^.*Parsing command:\s*//;p}'
      
      • sed -n:默认不打印行。
      • /Parsing command/{...}:对匹配Parsing command 的每一行执行{} 中的操作
      • s/^.*Parsing command:\s*//:删除从行首 (^) 到 Parsing command: 的所有内容。还要去掉冒号后的任何空格 (\s*)
      • p:打印修改后的行。

      测试文件(foo.txt):

      2018-03-18 03:07:57,689 INFO  [HiveServer2-Handler-Pool: Thread-13816]: parse.ParseDriver (ParseDriver.java:parse(190)) - Parsing command: SELECT * from table
      foo
      Parsing command: other command
      bar
      2018-03-18 03:07:57,689 INFO  [HiveServer2-Handler-Pool: Thread-13816]: parse.ParseDriver (ParseDriver.java:parse(190)) - Something else
      

      测试:

      $ sed -n '/Parsing command/{s/^.*Parsing command:\s*//;p}' < foo.txt
      SELECT * from table
      other command
      

      【讨论】:

        【解决方案3】:

        其实你也可以用grep:

        grep -Po 'Parsing command: \K.*'

        \K 将匹配重置为在\K 之后开始。 `-Pis for perl regexp, because regular grep regexp doesn't have\K.-o` 只打印匹配的部分。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-03-23
          • 1970-01-01
          • 2017-04-21
          • 1970-01-01
          • 1970-01-01
          • 2021-06-05
          • 2022-12-29
          • 2012-05-22
          相关资源
          最近更新 更多