Câu hỏi Grep tương đương với Windows 7?


Có nhắc lệnh không grep tương đương với Windows 7? Đó là, tôi muốn lọc ra các kết quả của một lệnh:

Sử dụng Bash:

ls | grep root

Nó sẽ là gì từ một dấu nhắc lệnh Windows?


210
2018-06-22 20:51


gốc


không nhầm lẫn ms-dos với dấu nhắc lệnh. + Sử dụng find and findstr và thậm chí grep, cho windows .. chắc chắn dễ dàng tìm thấy với một tìm kiếm nhanh. thậm chí còn có các bảng lệnh tương đương trong linux và windows. bạn cũng bash ví dụ không phải là cụ thể để bash .. chỉ cần tôi giả sử, * nix OS. - barlop


Các câu trả lời:


Findstr nghe như những gì bạn muốn. Tôi sử dụng nó tất cả các thời gian như là một tương đương grep tương đương trên nền tảng Windows.

Một vi dụ khac với ống:

C:\> dir /B | findstr /R /C:"[mp]"

253
2018-06-22 21:00



Yeah đó dường như là những gì tôi đang tìm kiếm. Tôi hiểu có lẽ có những hạn chế. Tôi sẽ thử. - chrisjlee
tại sao họ không thể gọi nó là grep! - Victor Grazi
@VictorGrazi Họ thực sự đã làm lúc đầu, xem bài viết này. Ban đầu nó được đặt tên là qgrep - nhưng sau đó được đổi tên thành. - Zitrax
Vấn đề lớn với findstr là mẫu regex có thể không chứa các lựa chọn thay thế. - Wolf
Câu hỏi đặt ra là về Windows 7, nhưng các phiên bản Windows khác có findstr theo mặc định? Kể từ Windows XP? - Peter Mortensen


Có một số khả năng:

  • Sử dụng cổng của Unix grep chỉ huy. Có nhiều lựa chọn. Nói đến là GNUWin32, cygwinunxutils. Ít nổi tiếng hơn, nhưng theo một số cách tốt hơn, là các công cụ trong Bộ công cụ tiện ích SFUA, chạy trong Hệ thống con cho các ứng dụng dựa trên UNIX đến ngay trong hộp với Windows 7 Ultimate edition và Windows Server 2008 R2. (Đối với Windows XP, người ta có thể tải về và cài đặt Dịch vụ cho phiên bản UNIX 3.5.) Bộ công cụ này có một số lượng lớn các công cụ dòng lệnh TUI, từ mv và du, thông qua vỏ Korn và C, để perl và awk. Nó có cả hai hương vị x86-64 và IA64 cũng như x86-32. Các chương trình chạy trong môi trường POSIX gốc của Windows, chứ không phải với các trình mô phỏng DLL (chẳng hạn như cygwin1.dll) phân lớp mọi thứ qua Win32. Và vâng, bộ công cụ có grep, cũng như khoảng 300 người khác.
  • Sử dụng một trong nhiều Win32 gốc grep các lệnh mà mọi người đã viết và xuất bản.  Tim Charron có một phiên bản Win32 gốc của GNU grep đã sửa đổi, ví dụ. Cũng có PowerGREP, Bare Grep, grepWin, AstroGrepdnGrep, mặc dù đây là tất cả các chương trình GUI không phải chương trình TUI.
  • Sử dụng cung cấp find và findstr.  Cú pháp khác với cú pháp của grep, lưu ý, cũng như khả năng biểu thức chính quy.

40
2018-06-23 13:06



Cygwin làm việc cho tôi một cách độc đáo trên Win 7. Tôi cần grep và GnuWin32 grep không làm việc cho tôi. - Kozuch
Bạn viết Tôi không thấy perl trong SUA C: \ Windows \ SUA> dir perl * / s / b Không tìm thấy và chạy tệp, ví dụ: c shell của SUA Tôi không thấy nó trong / bin - barlop
bạn cũng viết rằng SFUA là một số cách tốt hơn. Trong những cách? - barlop
@Kozuch trừ khi bạn nói nó không hoạt động như thế nào, thì bình luận của bạn không hữu ích - barlop


Nếu PowerShell lệnh được cho phép, sử dụng

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

hoặc ngắn

PS C:\> ls | sls root

Lưu ý rằng bí danh sls chỉ được định nghĩa bắt đầu bằng PowerShell phiên bản 3.0. Bạn có thể thêm bí danh để nhập ít hơn:

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

Để chạy lệnh PowerShell trực tiếp từ cmd, sử dụng

C:\>powershell -command "ls | select-string root"

17
2018-01-13 13:16



Grep, cách Powershell. communary.net/2014/11/10/grep-the-powershell-way - Charles Burge


Trong bản sửa đổi ban đầu của bạn, bạn đã viết MS-DOS, chỉ có FIND, theo như tôi biết. Nhưng đó là một hệ điều hành cũ không được sử dụng nữa.

Trong lời nhắc lệnh Windows NT (ví dụ: Win2K và giành XP và sau đó, ví dụ: win7, win10), bạn có thể sử dụng find và findstr và nếu bạn tải xuống GnuWin32 sau đó grep 

Sự khác biệt cơ bản là findstr có một số cụm từ thông dụng ủng hộ. Grep hỗ trợ các biểu thức chính quy tốt nhất.

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

find /? và findstr /?cho bạn thấy những gì các công tắc làm.

Gnuwin32 có "gói". Nếu bạn tải xuống GnuWin32, tôi đề xuất gói coreutils cho một loạt các tiện ích hữu ích cơ bản mà bạn quen thuộc, nhưng grep không nằm trong gói đó là gói riêng của nó.

Thêm

GrepWin32's grep, lần cuối tôi kiểm tra, là cũ. Cygwin's grep là nhiều hơn đến nay. Cũng nên nhớ rằng nhiều người sử dụng Máy ảo thay vì các cổng windows của lệnh * nix.


14
2018-06-22 21:00





Nếu bạn muốn sử dụng grep, thay vì findstr, có một đĩa đơn .exe phiên bản tệp trong UnxUtils, do đó, nó di động và không cần phải cài đặt nó, hoặc sử dụng một cái gì đó như Cygwin.


9
2018-06-22 21:07



Điều này là thú vị nhưng sẽ yêu cầu cài đặt công cụ đó. - chrisjlee
@ Chris: Không có cài đặt. Nó chỉ là một .zip tệp của .exe các tập tin. Nhược điểm nhỏ duy nhất là các phiên bản hơi cũ. - paradroid
Nhược điểm của việc cũ là gì? Phần mềm có thể cũ không? Tất cả các byte mới. - user unknown
GnuWin32 cũng cung cấp grep cho cửa sổ: gnuwin32.sourceforge.net/packages/grep.htm - LiuYan 刘研
@userunknown, ví dụ, lệnh unxutils sed cũ hơn và không hỗ trợ \ d e.g. \ d22 để chỉ định báo giá. Một wget cũ hơn có thể không tải xuống một trang mới hơn và nếu bạn yêu cầu hỗ trợ, họ có thể yêu cầu bạn tải trang mới nhất để có thể giải quyết một số vấn đề. Một grep thực sự cũ không có nghi ngờ sẽ không có mức hỗ trợ regex mà hiện tại có - barlop


Bạn có thể thử cài đặt Chocolatey trên Windows và thông qua đó, hãy cài đặt Gow dụng cụ. Điều này sẽ cung cấp cho bạn grep trên Windows.

Gow đứng cho GNU trên Windows. Nó cung cấp các tiện ích dòng lệnh Unix trên Windows.


3
2017-09-11 05:33



Đó là một trình quản lý gói, như apt-get nhưng cho các cửa sổ. Nó có tên 'cos nhà phát triển dựa trên NuGet, người quản lý gói cho studio trực quan, và nghe giống như nugget (như trong gà nugget), nên anh ấy nghĩ anh ấy "vui" hoặc "thông minh" và gọi chương trình của anh ấy Chocolatey NuGet. Tôi nghe nói rằng trên một podcast phỏng vấn anh ấy. Gow cũng có thể được tải xuống độc lập - barlop
Tôi mới đến Gow, sau vài ngày sử dụng tôi có thể làm chứng rằng tôi thích nó rất nhiều - nó là tốt hơn so với tất cả các cổng cũ của UNIX utils mà tôi đã sử dụng trước đây. - Radim Cernej
@RadimCernej nhận xét của bạn không hữu ích trừ khi bạn tuyên bố làm sao bạn nghĩ nó tốt hơn. - barlop
@barlop: Vì tôi đã viết bình luận Jan-2016 của tôi dần dần và hoàn toàn chuyển sang Gow. Cho đến nay không có lỗi, nó có tất cả các tiện ích mà tôi cần / sử dụng, đường dẫn là đầu ra ở định dạng Microsoft (làm cho nó dễ dàng để sao chép / dán vào các chương trình khác). Gow là không xâm lấn đủ (dễ cài đặt và loại bỏ) mà tôi khuyên bạn nên kiểm tra lái nó. - Radim Cernej


Sử dụng Bash

$ ls | grep root

Sử dụng Cmd

> dir /b | findstr root

Ở đâu /b viết tắt của blà danh sách các thư mục và tệp


2
2018-05-02 05:47



Điều này sao y một câu trả lời khác và không thêm nội dung mới. Vui lòng không đăng câu trả lời trừ khi bạn thực sự có nội dung mới để đóng góp. - DavidPostill♦
@DavidPostill: Đây là giải pháp nhanh cho người dùng "TL; DR" (như tôi) - vladkras
Đó không phải là lý do để thêm một câu trả lời mà không đóng góp bất cứ điều gì mới. Trong mọi trường hợp, câu trả lời được chấp nhận sẽ luôn xuất hiện đầu tiên, vì vậy nó sẽ được đọc trước bạn. - DavidPostill♦
@DavidPostill, đừng bận tâm, nhưng câu trả lời được chấp nhận chứa quá nhiều và không giải thích được phím /B, /R và /C OP không hỏi, trong khi câu trả lời của tôi cho chính xác tương đương - vladkras
Các /b là làm cho dir đầu ra giống như ls đầu ra. Nếu bạn kiểm tra nó, bạn sẽ thấy sự khác biệt. Vì vậy, nó không phải là tương đương chính xác. - DavidPostill♦


Tôi đã viết một thay thế Windows để grep bằng cách sử dụng mã Hybrid Batch / JScript. Tôi đã viết điều này bởi vì nhận được các ký tự thoát ngay trong cổng GNU Win32 grep là một nỗi đau thực sự. Phiên bản này hoạt động giống như cách bạn muốn phiên bản GNU hoạt động trong 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);
        }
    }

}

Bạn luôn có thể tìm phiên bản mới nhất trên Ý chính trang cho điều này.


2
2018-03-03 11:06





http://www.multireplacer.com

Chương trình đa thay thế đã được chuẩn bị để nhiều chức năng có thể được thực hiện bằng cách sử dụng tham số dòng lệnh. Sử dụng dòng lệnh được hiển thị bên dưới:

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]

1
2018-02-08 22:15