2011-06-22 20:51:57 +0000 2011-06-22 20:51:57 +0000
246
246

Grep эквивалент для Windows 7?

Есть ли командная строка grep эквивалент для Windows 7? То есть я хочу отфильтровать результаты команды:

Bash use:

ls | grep root

Что бы это было из командной строки Windows?

Ответы (13)

287
287
287
2011-06-22 21:00:56 +0000

(http://technet.microsoft.com/en-us/library/bb490907.aspx) звучит так, как ты хочешь. Я постоянно использую его как примерный grep-эквивалент на платформе Windows. Еще один пример с трубами:

C:\> dir /B | findstr /R /C:"[mp]"
45
45
45
2011-06-23 13:06:17 +0000

Есть несколько возможностей:

  • Использовать порт Unix grep команды. Есть несколько вариантов. Часто упоминаются GNUWin32 , cygwin и unxutils . Менее известные, но в некотором роде лучше, инструменты из SFUA utility toolkit , которые запускаются в Subsystem for UNIX-based Applications , которые идут прямо сюда в комплекте с Windows 7 Ultimate edition и Windows Server 2008 R2. (Для Windows XP можно скачать и установить Службы для UNIX версии 3.5 ). Этот инструментарий имеет большое количество инструментов TUI командной строки, начиная с mv и du, через оболочки Korn и C, и заканчивая perl и awk. Он поставляется как с x86-64, так и с IA64, а также с x86-32. Программы работают в родном для Windows POSIX окружении, а не с эмуляторными DLL (такими как cygwin1.dll), расслаивающими вещи по Win32. И да, инструментарий имеет grep, а также около 300 других.
  • Использование одной из множества нативных команд Win32 grep, которые люди написали и опубликовали. У Тима Чаррона, например, есть нативная Win32 версия модифицированного GNU grep . Есть также команды PowerGREP , Bare Grep , grepWin , AstroGrep и dnGrep , хотя это все программы с графическим интерфейсом, а не программы с интерфейсом TUI.
  • Используйте прилагаемые команды find и findstr. Синтаксис отличается от синтаксиса команды grep, обратите внимание, так же как и возможность регулярных выражений.
19
19
19
2014-01-13 13:16:43 +0000

Если разрешены команды PowerShell, используйте

PS C:\> Get-ChildItem | Select-String root

или короткие

PS C:\> ls | sls root

Имейте в виду, что псевдоним sls определяется только начиная с версии PowerShell 3.0. Вы можете добавить псевдоним для меньшего набора:

PS C:\> New-Alias sls Select-String

Чтобы выполнить команду PowerShell непосредственно из cmd, используйте

C:\>powershell -command "ls | select-string root"
```.
18
18
18
2011-06-22 21:00:57 +0000

В вашей ранней ревизии вы написали MS-DOS, есть только FIND, насколько я знаю. Но это старая ОС, которая больше не используется.

В командной строке Windows NT (например, Win2K и win XP и позже, так что, например, win7,win10), вы можете использовать find и findstr, и если вы загрузите GnuWin32 , то grep

Основные различия заключаются в том, что findstr имеет поддержку некоторых регулярных выражений . Лучше всего поддерживает регулярные выражения.

C:\>dir | find "abc"
C:\>dir | find /i "abc"

find /? и findstr /? показывает, что делают переключатели. Gnuwin32 имеет “пакеты”. Если вы загружаете GnuWin32, я предлагаю пакет coreutils для кучи основных полезных утилит, с которыми вы были бы знакомы, но grep не в том, что это его собственный пакет.

Добавленный

GnuWin32’s grep, последний раз, когда я проверял, является старым. Греп Сигвина гораздо более современный. Также имейте в виду, что многие люди используют виртуальные машины, а не windows-порты команд *nix.

9
9
9
2011-06-22 21:07:43 +0000

Если вы предпочитаете использовать grep, а не findstr, то в UnxUtils есть версия одного .exe файла, так что он портативный, и нет необходимости его устанавливать, или использовать что-то вроде Cygwin.

3
3
3
2014-09-11 05:33:28 +0000

Вы можете попробовать установить Chocolatey на Windows, и через это установить инструмент Gow . Это даст вам grep под Windows.

Gow подставку для GNU под Windows. Она предоставляет утилиты командной строки Unix под Windows.

2
2
2
2016-05-02 05:47:50 +0000

Использование пультовой записи и002 и002 и001 и002 и002 и002 Использование компакт-дисков и002 и002 и002 и001 и002 и002 и002, где /b означает b - это список каталогов и файлов.

2
2
2
2015-03-03 11:06:06 +0000

Я написал Windows альтернативу grep, используя Hybrid Batch/JScript код. Я написал это, потому что получение escape-символов прямо в grep-порте GNU Win32 было настоящей болью. Эта версия больше похожа на то, как бы вы хотели, чтобы версия GNU работала в Windows:

@set @junk=1 /*
@cscript //nologo //E:jscript %~f0 %*
@goto :eof */

var args=WScript.Arguments, argCnt=args.Length, stdin=WScript.StdIn, stdout=WScript.StdOut;
var replaceSingleQuotes=false, printMatchesOnly=false, matchString, flagString, regex, argDx=0;

if(argCnt==0) {
    throw new Error("You must provide search criteria.");
}

flagString=""
if(argCnt>1) {
    for(var bLoop=true; bLoop&&argDx<argCnt-1; argDx++) {
        switch(args(argDx)) {
        case '-t': replaceSingleQuotes=true; break;
        case '-o': printMatchesOnly=true; break;
        case '-g': flagString+="g"; break;
        case '-i': flagString+="i"; break;
        case '-m': flagString+="m"; break;
        default: bLoop=false; break;
        }
    }
}
if(replaceSingleQuotes) {
    matchString=args(argCnt-1).replace("'", '"');
} else {
    matchString=args(argCnt-1);
}

if(printMatchesOnly) {
    while(!stdin.AtEndOfStream) {
        var sLine=stdin.ReadLine();
        if(flagString.Length) regex=new RegExp(matchString, flagString);
        else regex=new RegExp(matchString);
        var m,matches=[],startDx=0;
        while((m=regex.exec(sLine.substr(startDx))) !== null) {
            stdout.WriteLine(m[0]);
            startDx+=m.lastIndex;
        }
    }
} else {
    if(flagString.Length) regex=new RegExp(matchString, flagString);
    else regex=new RegExp(matchString);
    while(!stdin.AtEndOfStream) {
        var sLine=stdin.ReadLine();
        if(regex.test(sLine)) {
            stdout.WriteLine(sLine);
        }
    }

}

Вы всегда можете найти последнюю версию для этого на моей странице Gist .

1
1
1
2014-02-08 22:15:42 +0000

http://www.multireplacer.com

Подготовлена программа Multi Repacer, так что многие функции могут быть выполнены с помощью параметров командной строки. Использование командной строки показано ниже:

MultiReplacer [Multi Replacer File] | [Search files] | [Search folders]
[-Subs] [-NoSubs] [-IncPtr=pattern] [-ExcPtr=patterns] [-DestDir=destination]
[-DMAnyTime]
[-DMWithinanhour] [-DMToday] [-DMYesterday] [-DMThisweek] [-DMThismonth]
[-DMThisYear]
[-CDMAfter=date] [-CDMBefore=date] [-MinFileSize=bytes count]
[-MaxFileSize=bytes count]
[-Search=text] [-Case] [-NoCase] [-Regex] [-NoRegex] [-SubMatchText=text]
[-ReplaceText=text]
[-StartSearch] [-StartReplace] [-AutoClose] [-StopAfterMatchThisFile] [-StopAfterMatchAll]
[-ExtractedWordsFile=filename] [-ExtractedLinesFile=filename] [-
ReportFile=filename]
0
0
0
2016-06-12 12:31:27 +0000

Я бы предложил использовать busybox-w32 , т.к. он всего около 500 KB по размеру и активно поддерживается.

Так что в вашем случае, в командной строке, это:

busybox ls | busybox grep root

Вы можете использовать doskey в запуске командной строки пакетным файлом, чтобы сделать команду, например:

doskey ls="path\to\busybox.exe" ls $*

doskey grep="path\to\busybox.exe" grep $*

Тогда вы можете использовать ls | grep root в командной строке.

0
0
0
2017-07-04 08:34:21 +0000

Если вы хотите добавить самую простую grep в вашу оконную среду, то перейдите к c:\windows\system32 и добавьте небольшой пакетный скрипт, используя эту команду:

echo findstr %1 > grep.bat

Теперь вы можете

dir | grep notepad.exe

, что на самом деле является страшной смесью дерьма. Так что добавьте еще один пакетный скрипт для ls, как объяснено в этом post

echo dir %1 > %systemroot%\system32\ls.bat

Теперь все выглядит немного знакомо

ls | grep notepad

HTH

0
0
0
2014-09-03 02:48:08 +0000

Вы все еще можете использовать привычные команды grep и другие команды Linux, загрузив этот инструмент UnxUtils и добавив его местоположение в переменную окружения PATH.

-2
-2
-2
2016-03-25 08:35:24 +0000
echo findstr %1 %2 %3 %4 %5 > %systemroot%\grep.cmd

Это будет быстрый и грязный эквивалент.

C:\Windows\system32>dir | grep xwiz
C:\Windows\system32>findstr xwiz
2009.06.10 23:03 4.041 xwizard.dtd
2009.07.14 03:39 42.496 xwizard.exe
2009.07.14 03:41 432.640 xwizards.dll

Похожие вопросы

3
28
13
7
5