用于文本/字符串处理的Java库,类似于unix / linux实用程序

时间:2011-07-13 00:13:07

标签: java unix text string-formatting

我是一名java程序员。我经常使用bash脚本进行文本处理。

grep,sed,awk,tr,wc,find等实用程序以及命令之间的管道提供了如此强大的组合。

然而,bash编程缺乏可移植性,可测试性以及Java中存在的更优雅的编程结构。它还使得集成到我们的其他Java产品中变得更加困难。

我想知道是否有人知道任何可能提供我正在寻找的Java文本处理库。

能够写下来真是太酷了:

Text.createFromFile("blah.txt).grep("-v","ERROR.*").sed("s/ERROR/blah/g").awk("print $1").writeTo("output.txt")

这可能是天上掉馅饼的东西。但是我想我无论如何都要提出这个问题。

2 个答案:

答案 0 :(得分:3)

Unix4j实现了一些基本的unix命令,主要集中在文本处理上(支持命令之间的管道):http://www.unix4j.org

示例(Ben的示例,但没有awk,因为目前不支持):

Unix4j.fromStrings("1:here is no error", "2:ERRORS everywhere", "3:another ERROR", "4:nothing").toFile("blah.txt");
Unix4j.fromFile("blah.txt").grep(Grep.Options.v, "ERROR.*").sed("s/ERROR/blah/g").toFile("output.txt");     
Unix4j.fromFile("output.txt").toStdOut();       

>>>
1:here is no error
4:nothing

注意:

  • 该问题的作者参与了unix4j项目

答案 1 :(得分:2)

信不信由你,但我使用嵌入式Ant来完成其中的许多任务。


更新

Ant具有Java api,允许从Java项目调用它。这是嵌入式模式。这是对And Api 1.6.1的引用。分发也应该包括文档。

要使用它,您将创建新的任务对象,设置适当的参数并像在build.xml中那样执行它,但是通过Java Api。比你可以运行你的任务。

这样的东西
ReplaceRegExp regexp = new ReplaceRegExp();
regexp.setMatch("bla");
regexp.setFile(new File("inputFile"));
regexp.execute();

您可能还需要设置一些其他内容。

不确定它是否解决了您的问题,但Ant有很多代码可以解决问题。只需搜索文档。