Библиотека Java Grep - PullRequest
       5

Библиотека Java Grep

21 голосов
/ 03 июня 2011

Есть ли хорошая, простая библиотека Java Grep?Я не против нативного кода или сценариев, и я сделаю это, но для моих целей пропускная способность невелика, и было бы неплохо иметь все это в одном аккуратном пакете.* ОБНОВЛЕНИЕ: Извините.Я знаю о java.regex, просто сейчас я довольно занят и устал.То, что я ищу, - это то, что эффективно объединяет Java Regex с просмотром набора файлов и их переписыванием.Это не будет слишком сложно написать, я признаю.Мне было просто любопытно, если это уже существует.

Ответы [ 4 ]

14 голосов
/ 03 июня 2011

Мне не известна сложная библиотека grep Сильный текст, но вы правы: это не сложно написать. Я предлагаю комбинацию commons-io и String.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);}
    }
}

Обновление Марко указал Unix4j, что является довольно интересной библиотекой, которая эмулирует конвейерную Unix | с цепочкой Java-методов. grep поддерживается, а также cat, cd, cut, echo, find, grep, head, ls, sed, sort, tail, uniq, wc, barges.

12 голосов
/ 27 июня 2013

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
8 голосов
/ 05 июля 2012

да.Grep4j - библиотека grep для сред Unix, и вы также можете легко выполнить удаленный поиск: http://code.google.com/p/grep4j/

4 голосов
/ 03 июня 2011

String.matches(someRegex); Внутренне использует java.util.regex.Pattern и Matcher

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...