Есть шаблоны утилиты вроде 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, это поздно, я думаю)
GnuWin32 стоит упомянуть, он предоставляет собственную версию Win32 всех стандартных инструментов linux, включая grep, file, sed, groff, indent и т. д.
и он постоянно обновляется, когда выпускаются новые версии этих инструментов.
в Windows я использую Far Manager для поиска файлов. BSD лицензирован, работает в консоли, экономит время на вводе параметров cmdline. Вот его диалог поиска, вызванный 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 Загрузить
Несмотря на свое несколько запутанное название, он хорошо работает и может использоваться различными способами для поиска файлов.
Удачи
мы недавно использовали PowerGREP для некоторых довольно продвинутых массовых операций с тысячами файлов. Включая поиск регулярных выражений в содержании PDF-файлов и изменение PDF-документов в крупном масштабе.
стоит своих денег, если вы хотите сэкономить время от Мануэля труда. Вы можете попробовать, прежде чем покупать, я думаю.
Если вам нужно использовать голые окна, то в дополнение к опции Powershell, указанной выше, вы можете использовать VBScript, который имеет достойную поддержку регулярных выражений.
MS также имеет приличную область сценариев на Technet с тонной примеров для администраторов.
просто попробуйте утилиту likegrep java. Это может помочь вам во многих случаях. Как вы хотите, он также может заменить текст, найденный в файлах. Он гарантирует свою работу с большими файлами (до 8 Гб протестировано)
Как упоминалось выше, проект gnuwin32 имеет версию Windows CLI grep.
Если вы хотите что-то с графическим интерфейсом, я бы рекомендовал инструмент (с открытым исходным кодом)AstroGrep.
прошло некоторое время с тех пор, как я использовал их, но Borland (Embarcadero теперь) включил командную строку grep с их компилятором C/C++. В течение некоторого времени они сделали доступной свою версию 5.5 как скачать после регистрации.
рекомендую 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
.