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.
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 Скачать
Несмотря на его несколько запутанное название, он хорошо работает и может быть использован в различных способах поиска файлов.Удачи
Голый Grep хорошо, если вы хотите графический интерфейс. Gnu grep хорошо для CLI
мы недавно использовали 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