grep4j for zgrep ie。,grepping归档日志文件

时间:2016-05-02 07:54:09

标签: java grep

我正在使用"Grep4J“库来从linux服务器上查看日志。但我想在”gz“文件中进行grep,这些文件只是归档日志文件。

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

我现在使用以下命令:

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

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:-1)

不要使用其他奇怪的库。 您可以从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);
}

然后,只需调用任何正常的linux shell命令(在本例中为zgrep而不是ping),无论如何,来自Java。