Есть шаблоны утилиты вроде grep в Windows?

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

29 ответов


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


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


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


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

C:>dir / findstr Windows

11/06/2013 09: 55 PM Windows


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

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

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


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


Cygwin 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, но интерфейс командной строки также доступен.


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

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

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


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


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


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


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

Удачи


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

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


Голый Grep хорошо, если вы хотите GUI. в GNU grep в хорошо для CLI


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


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

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


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

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


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


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

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


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


существует коммерческая утилита grep, доступная из Дубовый Дорог.


рекомендую PowerGrep

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

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

по 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.летучая мышь!--10--> (вместе с jgrep.jar):

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

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

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

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