Java Grep库

MJB*_*MJB 21 java grep

有没有好的,简单的Java Grep库?我并不反对本机代码或脚本,我会这样做,但就我的目的而言,吞吐量并不是一个大问题,将它全部放在一个整洁的包中会很好.

更新:抱歉.我知道java.regex,我现在正好相当忙碌和疲惫.我正在寻找的东西是有效地结合java正则表达式与通过一组文件并重写它们.我承认,这不会太难写.如果已经存在,我只是好奇.

Tho*_*hor 14

我不知道一个复杂的grep库强文本,但你是对的:它写起来并不难.我建议结合使用commons-ioString.matches(someRegex):

public class Grep extends DirectoryWalker
{
    public Grep(){
        super();
    }

    public List clean(File startDirectory){
      List results = new ArrayList();
      walk(startDirectory, results);
      return results;
    }

    protected boolean handleDirectory(File directory,
                                      int depth, Collection results){
      // Decide if a (sub) directory will be handled for recursive search
      return true;
    }

    protected void handleFile(File file, int depth, Collection results)
    {
        LineIterator it = FileUtils.lineIterator(file, "UTF-8");
        try{
            while (it.hasNext()){
                String line = it.nextLine();
                if(line.matches("myRegEx")){
                    results.add(file);
                }
            }
         }
         finally {LineIterator.closeQuietly(it);}
    }
}
Run Code Online (Sandbox Code Playgroud)

更新 Marco指出Unix4j哪个是一个非常有趣的库,它|使用Java方法链接模拟unix流水线.grep支持以及cat, cd, cut, echo, find, grep, head, ls, sed, sort, tail, uniq, wc, barges.


mar*_*rco 13

Unix4j还实现了一个(纯java)grep命令:http://www.unix4j.org

Unix4j.fromStrings("1:A", "2:B", "3:AB", "4:AC", "5:ABC").toFile("myFile.txt");
Unix4j.fromFile("myFile.txt").grep("AB").toStdOut();

>>>
3:AB 
5:ABC
Run Code Online (Sandbox Code Playgroud)


小智 8

是的.Grep4j - 适用于Unix环境的grep lib,您也可以轻松地进行grep:http://code.google.com/p/grep4j/

  • fyi,不是纯java grep,它需要在机器上运行grep. (2认同)