我正在使用"Grep4J
“库来从linux服务器上查看日志。但我想在”gz“文件中进行grep,这些文件只是归档日志文件。
默认情况下,Grep4J没有在tgz文件中进行grepping,也没有看到任何指定的选项。简单地说,我需要使用grep4j
库来等效“zgrep”。
我现在使用以下命令:
grep(constantExpression("my grep string"), on(finalProfile));
我愿意使用任何其他支持此功能的java库。请不要建议使用Runtime.exec()
,因为我已经意识到这一点,而且我的要求比在linux中执行简单命令要复杂得多。
答案 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。