Windows에 GREP과 같은 패턴 일치 유틸리티가 있습니까?


179

grepWindows 명령 프롬프트에서 사용할 수 있는 것과 유사한 유틸리티가 있습니까 , 아니면 타사 도구가 있습니까?

답변:


238

FINDSTR모든 Windows NT 클래스 운영 체제와 함께 제공 되는 명령 줄 도구 가 있습니다 ( FINDSTR /?자세한 내용은 명령 프롬프트 창에 입력 ). 모든 기능을 지원 grep하지는 않지만 필요에 따라 충분할 수 있습니다.


7
감사! grep은 아니지만 다른 사람들의 컴퓨터에 추가 소프트웨어를 설치하지 않고도 작동 할 수 있기를 원합니다.
세이지

42
파이프 기호와 함께 사용할 수도 있습니다.netstat -n | FINDSTR 3389
harperville

3
@sage는 약간의 창의력으로 findstr 은 grep과 똑같습니다. Windows 용이 grep 예제를 참조하십시오 .
mkyong

2
@mkyong-동의합니다. 나는 그것이 어떻게 든 불완전하다는 것을 제안하는 것이 아니며, 그것이 다르고 더 많은 도구를 사용하려면 더 많은 작업이 필요하다는 것입니다. 즉, findstr은 다른 컴퓨터를 사용할 때 선택하는 도구이지만 구문을 사용할 때마다 메모리를 새로 고쳐야합니다.
현인

1
@gonzobrains : 그것은 잘 문서화되지 않았습니다. 내가 알 수있는 한, 항상 Windows NT 명령 프롬프트에서 사용할 수 있습니다. 확실히 Windows NT 4에서 사용할 수 있었지만 Windows 3.5x에 대해서는 잘 모릅니다. 커맨드 프롬프트는 마이크로 소프트에 의해 "제 2 류 시민"으로 여겨졌으며, 유용한 명령 행 유틸리티가 문서 ☹️
Ken Keenan

35

select-string이 용도 의 cmdlet을 포함하는 PowerShell (Windows 7 / 2008R2의 표준으로 포함, XP / 2003 / Vista / 2008의 경우 선택 사항)


10
Select-String (별칭 : sls)은 정규식을 사용하지만 디렉토리 재귀와 같은 일부 기본 기능은 지원하지 않습니다. 이를 위해 여러 PowerShell 명령을 결합해야합니다. "dir -R -Include * .txt | sls"^ My Regex String $ "
yzorg

33

GnuWin Project의 Windows 용 Grep (2014-10-02 : 구식입니다. 아래 주석 참조)


1
이것은 GnuWin32 grep입니다. 최신 버전의 grep으로 업데이트되지 않았습니다. 이를 위해서는 Cygwin 버전이 필요합니다. 아래의 의견을 참조하십시오.
JPaget

27

언급했듯이 findstr은 정상적으로 작동합니다. 예 :

C :> dir | findstr 윈도우

2013 년 11 월 6 일 09:55 오후 Windows


11

Cygwin grep 등)


2
Cygwin grep을 실행하기 위해 전체 Cygwin 패키지를 설치할 필요는 없습니다. 약 5 DLL : cygpcre-0.dll, cygpcreposix-0.dll, cygwin1.dll, cygintl-8.dll 및 cyggce_s-1.dll이 필요합니다.
JPaget

나는 오랫동안 Cygwin을 사용하고 ... 최근에는 Windows-Linux-Subsystems로 대체하려고합니다 ... 오래는 아닙니다 ... CYGWIN으로 돌아 가기 ... 훨씬 더 풍부하고 덜 관입 적입니다 ... <cygwin을 추가하십시오. > \ bin to the path ... 그리고 Windows / Batch / Powershell ... s DOS-Box ... Powershell-Box ... 등에서 anyware를 사용할 수 있습니다 .--- GREAT TOOL! !!
ZEE

11

또한 추가 응용 프로그램없이 Windows 7 이상에서 GREP와 같은 기능을 사용하는 또 다른 방법을 찾았으며 구형 시스템에서는 Powershell을 사용할 수 있습니다.

에서 파워 쉘 , 사용자가 사용할 수있는 경우-개체 가 플러스 더 GREP의 모든 기능을 제공하는 기능을 상당히 포괄적 인 세트가 있습니다.

희망이 도움이됩니다.


10

아무도 FINDSTR 을 언급하지 않은 것에 놀랐습니다 . 나는 grep poweruser는 아니지만 findstr은 기본적인 정규 표현식 지원으로 파일을 필터링하고 stdin을 필요로합니다. Windows와 함께 제공됩니다. (편집 : 누군가가 findstr을 언급했습니다. 늦은 것 같습니다.)


5
"FINDSTR에 대해 언급 한 사람 없음"- "최고의"답변은 1 년
전이고

6

GnuWin32 는 grep, file, sed, groff, indent 등 모든 표준 리눅스 도구의 기본 Win32 버전을 제공합니다.

그리고 이러한 도구의 새 버전이 출시되면 지속적으로 업데이트됩니다.


이제는 choclatey에서 사용할 수있는 것처럼 보이 므로 cinst GnuWin32 는 신속하게 설치합니다.
스튜어트 Axon

4

Windows 에서는 파일 검색에 Far Manager 를 사용합니다. BSD 라이센스, 콘솔에서 작동, cmdline 매개 변수 입력 시간을 절약합니다. 다음은 Alt-F7에 의해 호출 된 검색 대화 상자입니다.Alt-F7


4

업데이트 : 이것은 원래 질문이 있었을 때 사실이 아니었지만 이제 Microsoft는 Linux 용 Windows 하위 시스템을 설치하도록 허용 하고 Windows는 grep을 실행합니다. PowerShell에서 다음을 실행하십시오.

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

나는 그것을 시도했지만이 오류가 발생합니다 : 'Enable-WindowsOptionalFeature'가 내부 또는 외부 명령, 작동 가능한 프로그램 또는 배치 파일로 인식되지 않습니다. 고마워요 btw.
Sandun


감사. 나는 그것을 시도 할 것이다. ;)
Sandun


3

훌륭하고 매우 빠른 파일 검색 유틸리티 인 Agent Ransack 은 정규식 검색을 지원합니다. 주로 GUI 유틸리티이지만 명령 줄 인터페이스도 사용할 수 있습니다.


2

Windows reskit에는 "qgrep"라는 유틸리티가 있습니다. 이미 상자에 넣었을 수도 있습니다. ;-) "꼬리"명령도 함께 제공됩니다. 감사합니다!


1

기술적으로 grep이나 명령 줄은 아니지만 Microsoft Visual Studio와 Notepad ++ 에는 정규 표현식을 완벽하게 지원하는 파일에서 찾기 기능이 매우 우수합니다. 명령 줄에서 CygWin 버전의 grep을 사용할 수 있지만 자주 사용하는 것을 발견했습니다.


1

이 스레드에 $ 0.02를 추가하겠습니다. dnGREP 는 실행 취소, Windows 탐색기 통합, PDF, zip, DOC 및 기타 여러 가지 검색을 지원하는 Windows를위한 훌륭한 오픈 소스 grep 도구입니다.


1

그렇습니다. 견고한 GUI를 가진 Windows PC 용 프로그램은 하나만 있으며 그것은 나에게 꼭 필요한 유틸리티입니다. 저는 개발자로 일하고 있으며 모든 컴퓨터에서 XFind 프로그램을 먼저 설치합니다. 1997 년에 만들어졌으며 지금까지 버전은 1.0이며 지금까지는 작동하며 최고입니다. 종종 " .cs", " .aspx", " .sct"(Visual FoxPro 양식 코드 파일) 또는 " . *" 에서 일부 문자열을 검색해야 하며 XFind는 모든 파일을 스캔하고 파일을 보여줍니다. 파일에서 문자열이 어디에 있는지 확인할 수 있습니다. XFind에는 일종의 편집기가 있습니다. 이진 파일이면 찾은 문자열이 표시됩니다. 당신이 나와 같은 개발자라면 그것을 사용 해보고 영원히 사용하십시오.


1

당신은 분명히 많은 다른 권고를 받았습니다.
무료, 타사 유틸리티의 개인적 선택은 다음과 같습니다. 에이전트 Ransack
에이전트 Ransack 다운로드
다소 혼란스러운 이름에도 불구하고 잘 작동하며 다양한 방법으로 파일을 찾을 수 있습니다.

행운을 빕니다





0

우리는 최근에 PowerGREP를 사용했습니다 수천 개의 파일에서 상당히 발전된 대량 작업에 를 . PDF 파일의 내용에 정규식 검색을 포함하고 PDF 문서를 대규모로 변경합니다.

마누엘 노동으로부터 시간을 절약하고 싶다면 돈 가치가 있습니다. 당신은 내가 생각하기 전에 당신이 그것을 시도 할 수 있습니다.


0

베어 Windows를 사용해야하는 경우 위에서 언급 한 Powershell 옵션 외에도 RegEx를 적절히 지원하는 VBScript를 사용할 수 있습니다.

MS는 또한 Technet에 관리자를위한 수많은 예제가 포함 된 적절한 스크립팅 영역을 보유하고 있습니다.


0

LikeGrep Java 유틸리티를 사용해보십시오. 많은 경우에 도움이 될 수 있습니다. 원하는대로 파일에있는 일부 텍스트를 바꿀 수도 있습니다. 대용량 파일에 대한 작업을 보증합니다 (최대 8GB 테스트)


0

위에서 언급했듯이 gnuwin32 프로젝트에는 grep의 Windows CLI 버전이 있습니다.

그래픽 인터페이스로 무언가를 원한다면 (오픈 소스) 도구 AstroGrep을 추천합니다 .


0

내가 사용한 지 오래되었지만 Borland (Embarcadero)는 C / C ++ 컴파일러와 함께 명령 줄 grep을 포함했습니다. 한동안 등록한 후 5.5 버전을 무료로 다운로드 있었습니다.



0

PowerGrep을 추천 합니다

몇 년 전에 전자 검색 프로젝트를 수행해야했습니다. 나는 fisdstr몇 가지 한계가 있으며, 특히 fisdstr은 결국 실패 할 것이라는 것을 알았습니다.

스크립트는 수십 개의 검색어 / 구문을 사용하여 수천 개의 파일을 검색해야했습니다.

Cygwin의 grep이 훨씬 잘 작동하고 자주 질식하지는 않았지만 궁극적으로 그래픽 인터페이스로 인해 언제 어디서 충돌했는지 쉽게 알 수 있었고 모든 조건부 및 출력에서 ​​편집하기가 쉽기 때문에 PowerGrep에갔습니다. 나는 원했다. 궁극적으로 PowerGrep은이 세 가지 중에서 가장 신뢰할 수있었습니다 .


0

나는 그것이 오래된 주제라는 것을 알고 있지만 여기에 당신이 할 수있는 또 다른 일이 있습니다. 인터넷에 액세스 할 수없고 사용 가능한 디스크 공간이 제한되어있는 개발자 VM에서 작업하므로 설치된 Java를 사용했습니다.

정규식 일치를 콘솔에 인쇄하는 작은 Java 프로그램을 컴파일하십시오. 항아리를 시스템 어딘가에 놓고 배치를 생성하여 폴더를 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 %*

PATH 환경 변수의 끝에 c : \ jgrep 를 추가 하십시오.

이제 jgrep "expression" file.txt어디서나 전화하십시오 .

식에서 특정 그룹을 인쇄하여 수정자를 추가하고처럼 호출했습니다 jgrep -printGroup=1 "expression" file.txt.


0

나는 오래된 질문을 알고 있지만이 게시물을 보았습니다. 그리고 나는 그것을 인터넷의 집단 기억을 위해 여기에 추가하는 것을 찾았습니다.

Powershell : 문자열 선택 : Microsoft.PowerShell.Utility

https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string

고급 examnples가 포함 된 유익한 블로그 게시물 : "PowerShell에서"grep "방법 https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/

해당 블로그 게시물의 간단한 예 : cat package.json | 문자열 선택-패턴 웹팩 ls ./src/components/ | 문자열 선택-패턴보기

C :> 고양이 post.md | 문자열 선택-패턴 "^ \ w * :"


0

Cygwin 사용 ...

32 및 64 비트 버전이
있으며 Windows 2000 (*)
에서 Windows 10 또는 Server 2019까지 잘 작동합니다

Cygwin을 오랫동안 사용
했으며 최근에는 Windows-Linux-Subsystems로 대체하려고했습니다 ...

오래지 않아 ...
나는 빨리 다시 Cygwin으로 돌아갔다.

훨씬 더 유연하고 제어 가능하며 풍부합니다
.

\ bin을 경로에 추가
하면 ... Windows / Batch / Powershell에서 anyware를 사용할 수 있습니다 ...
또는 DOS-Box ... 또는 Powershell-Box에서 .

또한 많은 훌륭한 패키지를 설치할 수 있습니다
nginX 또는 PHP와 같이 실제로 작동하는 를 심지어 IIS에서 Cygwin PHP 패키지를 사용하기도합니다 ...

보너스 wou는 bash 쉘에서도 사용할 수 있습니다 ...
(이것이 원래 의도라고 생각합니다 ;-))

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.