Есть ли аналогичная утилита для grep
, доступная из командной строки Windows, или для нее есть сторонний инструмент?
Есть ли уступка соответствия шаблону, например GREP в Windows?
Ответ 1
Я также нашел еще один способ использовать GREP как функциональность в Windows 7 и выше без какого-либо дополнительного приложения для установки, а в старых системах вы можете использовать установку Powershell.
В Powershell Пользователь может использовать Where-Object он имеет довольно полный набор функций, который обеспечивает все функциональные возможности GREP плюс больше.
Надеюсь, это поможет.
Ответ 2
Существует инструмент командной строки под названием FINDSTR
, который поставляется со всеми операционными системами Windows NT (введите FINDSTR /?
в окно командной строки для получения дополнительной информации). Он не поддерживает все grep
, но он может быть достаточно для ваших нужд.
Ответ 3
Grep для Windows от проекта GnuWin (2014-10-02: устарел, см. Комментарии ниже)
Ответ 4
PowerShell (входит в стандартную комплектацию Windows 7/2008R2, дополнительно для XP/2003/Vista/2008), который включает в себя командлет select-string
для этой цели.
Ответ 5
как упоминалось, findstr отлично работает. Пример:
C: > dir | findstr Windows
11/06/2013 09:55 Windows
Ответ 6
Cygwin grep и более;)
Ответ 7
Я удивлен, что никто не упомянул FINDSTR. Я не grep poweruser, но findstr делает то, что мне нужно, файлы фильтров и stdin, с поддержкой некоторых примитивных регулярных выражений. Корабли с Windows и все такое. (Edit: Ну, кто-то упомянул findstr, это, наверное, поздно)
Ответ 8
GnuWin32 стоит упомянуть, он предоставляет встроенную версию Win32 всех стандартных средств linux, включая grep, file, sed, groff, indent, и т.д.
И он постоянно обновляется при выпуске новых версий этих инструментов.
Ответ 9
В Windows я использую Far Manager для поиска файлов. BSD лицензируется, работает в консоли, экономит время при наборе параметров cmdline. Вот его диалог поиска, вызываемый Alt-F7.
Ответ 10
UnxUtils - отличный набор утилит Unix, которые запускаются в Windows. Он имеет grep, sed, gawk и т.д.
Ответ 11
Отличная и очень быстрая утилита поиска файлов, Agent Ransack, поддерживает поиск регулярных выражений. Это прежде всего утилита GUI, но также доступен интерфейс командной строки.
Ответ 12
Обновление: это не было правдой, когда вопрос был задан изначально, но теперь Microsoft позволяет установить Подсистему Windows для Linux, и тогда Windows запустит grep. В PowerShell запустите:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
Ответ 13
В окне reskit есть утилита под названием "qgrep". У вас может быть это на вашей коробке уже.;-) Он также поставляется с командой "хвост", слава богу!
Ответ 14
Хотя технически не grep и командной строки, Microsoft Visual Studio и Notepad ++ имеют очень хорошую функцию поиска в файлах с полной поддержкой регулярных выражений, Я часто использую их, хотя у меня также есть версия grep CygWin, доступная в командной строке.
Ответ 15
Я добавлю $0.02 к этой теме. dnGREP - отличный инструмент grep с открытым исходным кодом для окон, который поддерживает отмену, интеграцию с обозревателем Windows, поиск внутри PDF файлов, zips, DOC и множество других материал...
Ответ 16
Да, есть только одна программа для ПК с ОС Windows, у которой есть сплошной графический интерфейс, и это очень важно для меня. Я работаю разработчиком, и на каждом компьютере, который у меня был, сначала установите программу XFind. Он создан в 1997 году и до сих пор версии 1.0 и до сих пор работает и является лучшим. Часто мне нужно искать некоторую строку в ".cs", ".aspx", ".sct" (файл кода формы Visual FoxPro) или просто ". *", А XFind просматривает все файлы и показывает мне файлы, а другая замечательная вещь что вы можете посмотреть, где находится строка в файле. XFind также имеет своего рода редактор. Если это двоичный файл, он покажет вам найденную строку. Попробуйте и используйте его навсегда, если вы такой разработчик, как я.
Ответ 17
Вы, очевидно, получили много разных рекомендаций.
Мой личный выбор для бесплатной, сторонней утилиты: Agent Ransack
Агент Ransack Загрузить
Несмотря на свое запутанное имя, он работает хорошо и может быть использован различными способами для поиска файлов.
Удача
Ответ 18
Если вы устанавливаете Cygwin или Mingw, тогда да.
В противном случае, насколько я знаю.
Ответ 19
Bare Grep приятно, если вы хотите графический интерфейс. Gnu grep хорош для CLI
Ответ 20
Если вы не против платного продукта, PowerGREP - мой личный фаворит.
Ответ 21
Недавно мы использовали PowerGREP для некоторых довольно продвинутых операций с массой в тысячах файлов. Включая поиск регулярных выражений в содержимом PDF файлов и изменение документов PDF в крупном масштабе.
Его стоит денег, если вы хотите сэкономить время от мануального труда. Вы можете попробовать это, прежде чем покупать, я думаю.
Ответ 22
Если вам нужно использовать голые Windows, то в дополнение к опции Powershell, указанной выше, вы можете использовать VBScript, который имеет приличную поддержку RegEx.
MS также имеет приличную область сценариев в Technet с тонны примеров для администраторов.
Ответ 23
Просто попробуйте утилиту javascript LikeGrep. Это может помочь вам в очень многих случаях. Как вы пожелаете, он также может заменить некоторый текст, найденный в файлах. Он гарантирует его работу над большими файлами (тестирование до 8 ГБ)
Ответ 24
Как упоминалось выше, проект gnuwin32 имеет версию grep для Windows CLI.
Если вы хотите что-то с графическим интерфейсом, я бы порекомендовал инструмент (open-source) AstroGrep.
Ответ 25
Прошло некоторое время с тех пор, как я их использовал, но теперь Borland (Embarcadero) включил командную строку grep с их компилятором C/С++. В течение некоторого времени после регистрации они выпустили свою версию 5.5 как бесплатную загрузку.
Ответ 26
Есть коммерческая утилита grep, доступная из Системы Oak Road.
Ответ 27
все-в-одном занятом ящике содержит grep/egrep/sed/awk и МНОГО больше
получить его от:
или несколько старых
Ответ 28
Я рекомендую PowerGrep
Я должен был сделать проект по электронному открытию несколько лет назад. Я обнаружил, что fisdstr
имел некоторые ограничения, особенно fisdstr в конечном итоге терпит неудачу
script пришлось искать тысячи файлов, используя несколько десятков поисковых терминов/фраз.
Cygwin grep работал намного лучше, он не задыхался часто, но в конечном итоге я пошел в PowerGrep, потому что графический интерфейс значительно облегчил рассказывать, когда и где он разбился, а также это было действительно легко редактировать во всех условных выражениях и выводах, которые я хотел. В конечном итоге PowerGrep был самым надежным из трех.
Ответ 29
Я знаю, что это немного старая тема, но вот еще одна вещь, которую вы можете сделать. Я работаю на виртуальной машине разработчика без доступа к Интернету и довольно ограниченного свободного дискового пространства, поэтому я использовал установленную на ней java.
Скомпилируйте небольшую Java-программу, которая выводит совпадения регулярных выражений на консоль. Поместите jar в вашу систему, создайте пакет для его выполнения и добавьте папку в переменную PATH:
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.bat (вместе с 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
.
Ответ 30
Я понимаю, это старый вопрос, но я наткнулся на этот пост в поисках ответа. И я нашел один, так что добавив его здесь для коллективной памяти в Интернете
Powershell: модуль Select-String: Microsoft.PowerShell.Utility
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string
и информативное сообщение в блоге с расширенными примерами: "Как выполнить" grep "в PowerShell" https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/
Простой пример из этого поста в блоге: cat package.json | Web-пакет Select-String -Pattern ls./src/components/| Select-String -Pattern Просмотр
C:> кошка post.md | Select-String -Pattern "^\w *:"