වින්ඩෝස් 7 ට සමාන grep විධාන විමසුමක් තිබේද? එනම්, විධානයක ප්රති results ල පෙරීමට මට අවශ්යය:
බෑෂ් භාවිතය:
ls | grep root
එය වින්ඩෝස් විධාන විමසුමෙන් කුමක් වනු ඇත්ද?
වින්ඩෝස් 7 ට සමාන grep විධාන විමසුමක් තිබේද? එනම්, විධානයක ප්රති results ල පෙරීමට මට අවශ්යය:
බෑෂ් භාවිතය:
ls | grep root
එය වින්ඩෝස් විධාන විමසුමෙන් කුමක් වනු ඇත්ද?
Answers:
Findstr ඔබට අවශ්ය දේ වගේ. මම එය සෑම විටම වින්ඩෝස් වේදිකාවේ දළ වශයෙන් සමාන වේ.
පයිප්ප සමඟ තවත් උදාහරණයක් :
C:\> dir /B | findstr /R /C:"[mp]"
findstr
වන්නේ රීජෙක්ස් රටාවට විකල්ප අඩංගු නොවීමයි.
/R
හා /C
මෙහි පෙනී සිටින්නේ?
හැකියාවන් කිහිපයක් තිබේ:
grep
. තේරීම් කිහිපයක් තිබේ. ක්ෂමා කරන්නෙකු සඳහන් වේ GNUWin32 , cygwin , සහ unxutils . එතරම් ප්රසිද්ධ නැති නමුත් යම් ආකාරයකින් වඩා හොඳ වන්නේ යුනික්ස් පාදක කරගත් යෙදුම් සඳහා වන උප පද්ධතිය තුළ ක්රියාත්මක වන SFUA උපයෝගිතා මෙවලම් කට්ටලයේ ඇති මෙවලම් වන අතර එය වින්ඩෝස් 7 අල්ටිමේට් සංස්කරණය සහ වින්ඩෝස් සර්වර් 2008 ආර් 2 සමඟ කොටුව තුළට පැමිණේ. (Windows XP සඳහා, එක් කළ හැකි බාගත කර ස්ථාපනය යුනික්ස් අනුවාදය 3.5 සඳහා සේවා .) මෙම මෙවලම් කට්ටලය සිට, විධාන රේඛාව TUI මෙවලම් ඉතා විශාල ප්රමාණයක් ඇති හා එම Korn හා C ෂෙල් වෙඩි හරහා කිරීමට හාmv
du
perl
awk
. එය x86-64 සහ IA64 රසයන් මෙන්ම x86-32 යන දෙකින්ම පැමිණේ. cygwin1.dll
වින් 32 ට වඩා වැඩියෙන් ඉමියුලේටර් ඩීඑල්එල් (වැනි ) සමඟ නොව වින්ඩෝස් හි ස්වදේශීය නිසි පොසික්ස් පරිසරයේ වැඩසටහන් ක්රියාත්මක වේ . ඔව්, මෙවලම් කට්ටලය grep
මෙන්ම තවත් 300 ක් පමණ ඇත.grep
ජනතාව ලියා පළ කරන බව විධාන. නිදසුනක් ලෙස ටිම් චාරොන්ට නවීකරණය කරන ලද GNU grep හි Win32 අනුවාදයක් ඇත . එහි ද PowerGREP , Bare grep , grepWin , AstroGrep , සහ dnGrep මේ සියලු චිත්රක වැඩසටහන් නොවේ TUI වැඩසටහන් සිටින නමුත්,.find
සහ භාවිතා කරන්න findstr
. grep
නිත්ය ප්රකාශන හැකියාව මෙන් සින්ටැක්ස් සටහනට වඩා වෙනස් වේ .පවර්ෂෙල් විධාන අවසර දී ඇත්නම් , භාවිතා කරන්න
PS C:\> Get-ChildItem | Select-String root
හෝ කෙටි
PS C:\> ls | sls root
අන්වර්ථය sls
අර්ථ දැක්වෙන්නේ පවර්ෂෙල් අනුවාදය 3.0 සමඟ පමණක් බව මතක තබා ගන්න . අඩු ටයිප් කිරීම සඳහා ඔබට අන්වර්ථයක් එක් කළ හැකිය:
PS C:\> New-Alias sls Select-String
පවර්ෂෙල් විධානය cmd වෙතින් කෙලින්ම ක්රියාත්මක කිරීමට, භාවිතා කරන්න
C:\>powershell -command "ls | select-string root"
ඔබ එම්එස්-ඩොස් ලියූ මුල් සංශෝධනයේ FIND
ඇත්තේ මා දන්නා තරමින් පමණි. නමුත් එය තවදුරටත් භාවිතා නොකරන පුරාණ මෙහෙයුම් පද්ධතියකි.
වින්ඩෝස් NT වල කමාන්ඩ් ප්රොම්ප්ට් (උදා: Win2K සහ XP සහ පසුව, ඒ නිසා උදා win7, win10 දිනා), ඔබ භාවිතා කළ හැකිය find
සහ findstr
ඔබ බාගත නම් GnuWin32 පසුවgrep
මූලික වෙනස්කම් වන්නේ findstr හට නිත්ය ප්රකාශන සහය ඇත. ග්රෙප් නිත්ය ප්රකාශන සඳහා හොඳම සහය දක්වයි.
C:\>dir | find "abc"
C:\>dir | find /i "abc"
find /?
සහ findstr /?
ස්විචයන් කරන්නේ කුමක්ද යන්න ඔබට පෙන්වයි.
Gnuwin32 හි "පැකේජ" ඇත. ඔබ GnuWin32 බාගත කරන්නේ නම්, මම ඔබට හුරුපුරුදු මූලික ප්රයෝජනවත් උපයෝගීතා පොකුරක් සඳහා coreutils පැකේජය යෝජනා කරමි, නමුත් grep එය එහි පැකේජයක් නොවේ.
එකතු කරන ලදි
අවසන් වරට මා පරීක්ෂා කළ GnuWin32 ගේ ග්රෙප් පැරණි ය. සිග්වින්ගේ ග්රහණය යාවත්කාලීන ය. * නික්ස් විධානවල වින්ඩෝස් පෝට් වලට වඩා බොහෝ අය අතථ්ය යන්ත්ර භාවිතා කරන බව මතක තබා ගන්න.
ඔබ භාවිතා grep
කිරීමට කැමති නම්, UnxUtilsfindstr
හි තනි .exe
ගොනු අනුවාදයක් ඇත , එබැවින් එය අතේ ගෙන යා හැකි අතර එය ස්ථාපනය කිරීමට අවශ්ය නැත, හෝ සිග්වින් වැනි දෙයක් භාවිතා කරන්න.
.zip
ගොනුවේ .exe
ගොනු. එකම කුඩා අවාසිය නම් අනුවාදයන් තරමක් පැරණි වීමයි.
grep
වින්ඩෝස් සඳහා ද සපයයි : gnuwin32.sourceforge.net/packages/grep.htm
ඔබට ස්ථාපනය කිරීමට උත්සාහ කළ හැකිය වින්ඩෝස් හි චොකලට් අතර, ඒ හරහා Gow මෙවලම ස්ථාපනය කරන්න . මෙය ඔබට grep
වින්ඩෝස් මත ලබා දෙනු ඇත .
Gow
වින්ඩෝස් හි GNU වෙනුවෙන් පෙනී සිටින්න. එය වින්ඩෝස් හි යුනික්ස් විධාන රේඛා උපයෝගිතා සපයයි.
මම හයිබ්රිඩ් බැච් / ජේස්ක්රිප්ට් කේතය භාවිතා කරමින් ග්රෙප් සඳහා වින්ඩෝස් විකල්පයක් ලිවීය. මා මෙය ලිව්වේ GNU Win32 grep port එකෙන් ගැලවීමේ චරිත ලබා ගැනීම සැබෑ වේදනාවක් වූ බැවිනි. මෙම අනුවාදය වින්ඩෝස් හි GNU අනුවාදය වැඩ කිරීමට ඔබට අවශ්ය වන්නේ කෙසේද යන්නට වඩා බොහෝ සෙයින් ක්රියා කරයි:
@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);
}
}
}
මේ සඳහා ඔබට සෑම විටම මගේ සාරාංශ පිටුවේ නවතම අනුවාදය සොයාගත හැකිය .
බෑෂ් භාවිතය
$ ls | grep root
Cmd භාවිතය
> dir /b | findstr root
එහිදී /b
සඳහා නැවතුම් ෙපොළවල් ආදි සියලුම ෙතොරතුරු ආ නාමාවලි සහ ගොනු ලැයිස්තුවක් වේ
/B
, /R
හා /C
විශ්රාම වැටුප් මගේ පිළිතුර ලබා දෙන අතර, ගැන අහන්න නැහැ හරියටම සමාන
/b
වන බවට පත් කිරීම dir
ලෙස ප්රතිදානය එකම ls
ප්රතිදාන. ඔබ එය පරීක්ෂා කළහොත් ඔබට වෙනස පෙනෙනු ඇත. එබැවින් එය හරියටම සමාන නොවේ.
විධාන රේඛා පරාමිතීන් භාවිතා කරමින් බොහෝ කාර්යයන් සිදු කළ හැකි වන පරිදි බහු ප්රතිස්ථාපන වැඩසටහන සකස් කර ඇත. විධාන රේඛා භාවිතය පහත දැක්වේ:
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]
කාර්යබහුල පෙට්ටිය- 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
විධාන විමසුමේ භාවිතා කළ හැකිය .
grep
ඔබේ වින්ඩෝස් පරිසරයට සරලම දේ එකතු කිරීමට ඔබට අවශ්ය නම් , c:\windows\system32
මෙම විධානය භාවිතා කර කුඩා කණ්ඩායම් පිටපතක් වෙත යන්න:
echo findstr %1 > grep.bat
දැන් ඔබට පුළුවන්
dir | grep notepad.exe
එය ඇත්තෙන්ම බියජනක ජරාවක්. එබැවින් ls
මෙම ලිපියේ විස්තර කර ඇති පරිදි තවත් කණ්ඩායම් පිටපතක් එක් කරන්න
echo dir %1 > %systemroot%\system32\ls.bat
දැන් දේවල් ටිකක් හුරුපුරුදුයි
ls | grep notepad
HTH
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