Есть ли командная строка Grep эквивалент для Windows 7? То есть, я хочу отфильтровать результаты команды:
Использование Bash:
ls | grep root
Что это из командной строки Windows?
Есть ли командная строка Grep эквивалент для Windows 7? То есть, я хочу отфильтровать результаты команды:
Использование Bash:
ls | grep root
Что это из командной строки Windows?
Findstr звучит так, как вы хотите. Я использую его все время как приблизительный grep-эквивалент на платформе Windows.
Другой пример с трубками:
C:\> dir /B | findstr /R /C:"[mp]"
Существует несколько возможностей:
grep
команда. Есть несколько вариантов. Часто упоминаемые gnuwin32, Cygwin, а также unxutils, Менее известные, но в некотором смысле более эффективные инструменты являются Инструментарий утилиты SFUA, которые выполняются в Подсистема для приложений на базе UNIX который поставляется прямо в коробке с версией Windows 7 Ultimate и Windows Server 2008 R2. (Для Windows XP можно скачать и установить Услуги для UNIX версии 3.5.) Этот набор инструментов содержит большое количество инструментов командной строки TUI, начиная с mv
а также du
, через оболочки Корна и С, perl
а также awk
, Он подходит как для x86-64, так и для IA64, а также для x86-32. Программы выполняются в собственной собственной среде POSIX Windows, а не с эмулятором DLL (например, cygwin1.dll
), накладывая вещи поверх Win32. И да, набор инструментов grep
, а также около 300 других.grep
команды, которые люди написали и опубликовали. Тим Шаррон родная версия Win32 модифицированного GNU grep, например. Это также PowerGREP, Bare Grep, grepWin, AstroGrep, а также dnGrep, хотя это все программы GUI, а не программы TUI.find
а также findstr
, Синтаксис отличается от синтаксиса grep
, обратите внимание, как и функция регулярного выражения.Если 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"
В вашей ранней редакции вы написали MS-DOS, есть только FIND
, насколько я знаю. Но это древняя ОС, которая больше не используется.
В командной строке Windows NT (например, Win2K и Win XP, а затем, например, win7, win10), вы можете использовать find
а также findstr
и если вы загружаете GnuWin32 тогда grep
Основные отличия в том, что findstr имеет некоторые обычные выражения поддержка. Grep лучше всего поддерживает регулярные выражения.
C:\>dir | find "abc"
C:\>dir | find /i "abc"
find /?
а также findstr /?
показывает, что делают коммутаторы.
gnuwin32 имеет «пакеты». Если вы загружаете GnuWin32, я предлагаю пакет coreutils для кучи основных полезных утилит, с которыми вы были бы знакомы, но grep не в том, что это его собственный пакет.
добавленной
GnuWin32's grep, последний раз, когда я проверил, старый. Grep Cygwin намного более современен. Также имейте в виду, что многие люди используют виртуальные машины, а не окна Windows для команд * nix.
Если вы предпочитаете использовать grep
, скорее, чем findstr
, есть один .exe
версия файла в UnxUtils, поэтому он переносится, и нет необходимости устанавливать его, или использовать что-то вроде Cygwin.
Вы можете попробовать установить шоколадным в Windows, и через это установите Гоу инструмент. Это предоставит вам grep
в Windows.
Gow
подставка для GNU на Windows. Он предоставляет утилит командной строки Unix в Windows.
Использование Bash
$ ls | grep root
Использование Cmd
> dir /b | findstr root
где /b
означает бсписок каталогов и файлов
Я написал альтернативу grep для grep с использованием кода Hybrid Batch / JScript. Я написал это, потому что получение escape-символов прямо в порту GNU Win32 grep было настоящей болью. Эта версия гораздо больше похожа на то, как вы хотите, чтобы версия 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);
}
}
}
Вы всегда можете найти последнюю версию на моем Суть страницы для этого.
Была подготовлена многозаменательная программа, так что многие функции могут быть выполнены с использованием параметры командной строки. Использование командной строки приведено ниже:
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]
Вы все еще можете использовать свои знакомые grep
и другие команды Linux, загрузив этот инструмент UnxUtils и добавьте его в свой PATH
переменная среды