【问题标题】:Grep4j for zgrep ie., grepping archived log files用于 zgrep 的 Grep4j 即 grepping 归档日志文件
【发布时间】:2016-05-02 07:54:09
【问题描述】:

我正在使用 "Grep4J" 库来 grep 来自 linux 服务器的日志。但我什至想在 "gz" 文件中进行 grep,这些文件只不过是存档的日志文件。

默认情况下,Grep4J 不会在 tgz 文件中搜索,而且我也没有看到任何选项来指定它。简单地说,我需要使用 grep4j 库的“zgrep”等效项。

我现在正在使用以下命令:

grep(constantExpression("my grep string"), on(finalProfile));

我愿意使用任何其他支持此功能的 java 库。请不要建议使用Runtime.exec(),因为我已经知道这一点,而且我的要求比在 linux 中执行简单命令要复杂得多。

【问题讨论】:

    标签: java grep


    【解决方案1】:

    我浏览了grep4j的源代码。它默认也支持“.gz”文件。它使用“gunzip”而不是“zgrep”。似乎我的一些 gz 文件不正确,因为它无法从这些文件中读取内容。

    希望这可以帮助像我一样思考的人,即 grep4j 库不支持 gz 文件。

    【讨论】:

      【解决方案2】:

      不要为此使用其他奇怪的库。 您可以从 java 调用任何 shell 命令,并使用以下命令获取输出:

       Process proc = Runtime.getRuntime().exec("ping google.de");
      
      BufferedReader stdInput = new BufferedReader(new InputStreamReader(proc.getInputStream()));
      String s;
      while ((s = stdInput.readLine()) != null) {
          System.out.println(s);
      }
      

      然后,只需像这样从 Java 调用任何普通的 linux shell 命令(在本例中是 zgrep 而不是 ping),无论如何。

      【讨论】:

      • 嗨..我知道这一点。我想使用该库来避免重写所有这些逻辑,而且我在无法编写这样的程序的远程服务器中也需要它。除了 zgrep 之外,Grep4j 满足了我的需求。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多