Есть ли утилита сопоставления шаблонов, такая как GREP в Windows?



есть ли аналогичная утилита для grep доступно из командной строки Windows, или для него есть сторонний инструмент?

822   29  

29 ответов:

есть инструмент командной строки под названием FINDSTR который поставляется со всеми операционными системами Windows NT-класса (Тип FINDSTR /? в окне командной строки для получения дополнительной информации) он не поддерживает все grep делает, но это может быть достаточно для ваших нужд.

PowerShell (входит в стандартную комплектацию Windows 7 / 2008R2, необязательно для XP/2003/Vista / 2008), который включает select-string командлет для этой цели.

Grep для Windows от GnuWin Project (2014-10-02: он устарел, см. комментарий ниже)

Как уже упоминалось, она отлично работает. пример :

C:>dir / findstr Windows

11/06/2013 09: 55 PM Windows

Я также нашел еще один способ использования GREP, как функциональность в Windows 7 и выше без каких-либо дополнительных приложений для установки и на старых системах вы можете использовать установить Powershell.

на Powershell, пользователь может использовать Где-Объект Он имеет довольно полный набор функций, который обеспечивает всю функциональность GREP plus more.

надеюсь, это поможет.

Я удивлен, что никто не упомянул FINDSTR. Я не grep poweruser, но findstr делает то, что мне нужно, фильтрует файлы и stdin, с некоторой примитивной поддержкой регулярных выражений. Корабли с окнами и все такое. (Edit: Ну кто-то упомянул findstr, это поздно, я думаю)

программа grep и больше ;)

GnuWin32 стоит упомянуть, что он предоставляет собственную версию Win32 всех стандартных инструментов linux, включая grep, file, sed, groff, indent и т. д.

и он постоянно обновляется, когда выпускаются новые версии этих инструментов.

на Windows я использую Far Manager для поиска файлов. BSD лицензирован, работает в консоли, экономит время на вводе параметров cmdline. Вот его диалог поиска, вызванный Alt-F7. Alt-F7

UnxUtils это отличный набор утилит Unix, которые работают на Windows. У него есть grep, sed, gawk и т. д.

отличная и очень быстрая утилита поиска файлов, Агент Обшарить, поддерживает поиск регулярных выражений. Это в первую очередь утилита GUI, но интерфейс командной строки также доступен.

обновление: это было не так, когда вопрос был первоначально задан, но теперь Microsoft позволяет один установите подсистему Windows для Linux, а затем Windows запустит grep. В PowerShell выполните команду:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

в Windows reskit есть утилита под названием "qgrep". Возможно, он уже у вас на коробке. ;-) Он также поставляется с командой "хвост", слава богу!

хотя технически не grep и не командная строка, как Microsoft Visual Studio, так и Блокнот++ есть очень хорошая функция поиска в файлах с полной поддержкой регулярных выражений. Я часто использую их, хотя у меня также есть версия Cygwin grep, доступная в командной строке.

Я добавлю мой $0.02 в эту тему. dnGREP это отличный инструмент с открытым исходным кодом grep для windows, который поддерживает отмену, интеграцию проводника windows, поиск внутри PDF-файлов, молнии, документы и кучу других вещей...

Да есть только одна программа для ПК с Windows, которые имеют твердый графический интерфейс, и это важно util для меня. Я работаю разработчиком и на каждом компьютере, который у меня был, первым делом устанавливаю программу XFind. Он создан в 1997 году и до сих пор версия 1.0 и до сих пор работает и является лучшим. Часто мне нужно искать какую-то строку в ".cs",".aspx",".sct "(Visual FoxPro form code file) или просто".* "и XFind сканирует все файлы и показывает мне файлы и еще одну замечательную вещь это то, что вы можете посмотреть, где строка находится в файле. XFind также имеет какой-то редактор. Если это двоичный файл, он покажет вам строку, найденную. Попробуйте и используйте его навсегда, если вы разработчик, как я.

вы, очевидно, получили много различных рекомендаций.
Мой личный выбор для бесплатной утилиты 3rd Party: Agent Ransack
Агент Ransack Скачать
Несмотря на его несколько запутанное название, он хорошо работает и может быть использован в различных способах поиска файлов.

Удачи

Если вы устанавливаете Cygwin или Mingw, то да.

в противном случае, насколько я знаю.

Голый Grep хорошо, если вы хотите графический интерфейс. Gnu grep хорошо для CLI

Если вы не возражаете против платного продукта, PowerGREP-мой личный фаворит.

мы недавно использовали PowerGREP для некоторых довольно продвинутых массовых операций с тысячами файлов. Включая поиск регулярных выражений в содержании PDF-файлов и изменение PDF-документов в крупном масштабе.

стоит своих денег, если вы хотите сэкономить время от Мануэля труда. Вы можете попробовать, прежде чем купить я думаю.

Если вам нужно использовать голые окна, то в дополнение к опции Powershell, указанной выше, вы можете использовать VBScript, который имеет достойную поддержку регулярных выражений.

MS также имеет приличную область сценариев в Technet с тонной примеров для администраторов.

просто попробуйте likegrep java utility. Это может помочь вам в очень многих случаях. Как вы хотите, он также может заменить некоторый текст, найденный в файлах. Он гарантирует свою работу на больших файлах (до 8 Гб тестируется)

Как упоминалось выше, проект gnuwin32 имеет версию Windows CLI grep.

Если вы хотите что-то с графическим интерфейсом, я бы рекомендовал (open-source) tool AstroGrep.

прошло некоторое время с тех пор, как я их использовал, но Borland (Embarcadero now) включил командную строку grep с их компилятором C/C++. В течение некоторого времени они сделали доступной свою версию 5.5 как скачать после регистрации.

есть коммерческая утилита grep, доступная из Oak Road Systems.

рекомендую PowerGrep

Я должен был сделать проект e-discovery несколько лет назад. Я нашел это fisdstr были некоторые ограничения, особенно fisdstr в конечном итоге потерпит неудачу

скрипт должен был искать через тысячи файлов, используя пару десятков поисковых терминов / фраз.

grep Cygwin работал намного лучше, он не часто задыхался, но в конечном итоге я пошел в PowerGrep, потому что графический интерфейс сделал его гораздо проще сказать, когда и где он разбился, а также это было очень легко редактировать во всех условных и выходных данных, которые я хотел. В конечном счете PowerGrep был самым надежным из трех.

все-в-одном busybox содержит grep / egrep / sed / awk и многое другое

сделать это с:

или некоторые старые

Я знаю, что это немного старая тема, но вот еще одна вещь вы можете сделать. Я работаю на виртуальной машине разработчика без доступа в интернет и довольно ограниченного свободного места на диске, поэтому я использовал java, установленный на нем.

скомпилируйте небольшую программу java, которая печатает регулярные выражения на консоль. Поместите банку где-нибудь в вашей системе, создайте пакет для его выполнения и добавьте папку в свой путь переменная:

JGrep.java:

package com.jgrep;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class JGrep {

    public static void main(String[] args) throws FileNotFoundException, IOException {
        int printGroup = -1;
        if (args.length < 2) {
            System.out.println("Invalid arguments. Usage:");
            System.out.println("jgrep [...-MODIFIERS] [PATTERN] [FILENAME]");
            System.out.println("Available modifiers:");
            System.out.println(" -printGroup            - will print the given group only instead of the whole match. Eg: -printGroup=1");
            System.out.println("Current arguments:");
            for (int i = 0; i < args.length; i++) {
                System.out.println("args[" + i + "]=" + args[i]);
            }
            return;
        }
        Pattern pattern = null;
        String filename = args[args.length - 1];
        String patternArg = args[args.length - 2];        
        pattern = Pattern.compile(patternArg);

        int argCount = 2;
        while (args.length - argCount - 1 >= 0) {
            String arg = args[args.length - argCount - 1];
            argCount++;
            if (arg.startsWith("-printGroup=")) {
                printGroup = Integer.parseInt(arg.substring("-printGroup=".length()));
            }
        }
        StringBuilder sb = new StringBuilder();
        try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
            sb = new StringBuilder();
            String line = br.readLine();

            while (line != null) {
                sb.append(line);
                sb.append(System.lineSeparator());
                line = br.readLine();
            }
        }
        Matcher matcher = pattern.matcher(sb.toString());
        int matchesCount = 0;
        while (matcher.find()) {
            if (printGroup > 0) {
                System.out.println(matcher.group(printGroup));
            } else {
                System.out.println(matcher.group());
            }
            matchesCount++;
        }
        System.out.println("----------------------------------------");
        System.out.println("File: " + filename);
        System.out.println("Pattern: " + pattern.pattern());
        System.out.println("PrintGroup: " + printGroup);
        System.out.println("Matches: " + matchesCount);
    }
}

c:\jgrep\jgrep.летучая мышь (вместе с jgrep.банку):

@echo off
java -cp c:\jgrep\jgrep.jar com.jgrep.JGrep %*

и добавить c:\jgrep в конце переменной среды PATH.

теперь просто позвоните jgrep "expression" file.txt из любой точки мира.

мне нужно было распечатать некоторые конкретные группы из моего выражения, поэтому я добавил модификатор и назвал его как jgrep -printGroup=1 "expression" file.txt.

Comments

    Ничего не найдено.