답변:
FINDSTR
모든 Windows NT 클래스 운영 체제와 함께 제공 되는 명령 줄 도구 가 있습니다 ( FINDSTR /?
자세한 내용은 명령 프롬프트 창에 입력 ). 모든 기능을 지원 grep
하지는 않지만 필요에 따라 충분할 수 있습니다.
netstat -n | FINDSTR 3389
GnuWin Project의 Windows 용 Grep (2014-10-02 : 구식입니다. 아래 주석 참조)
Cygwin grep 등)
Windows 에서는 파일 검색에 Far Manager 를 사용합니다. BSD 라이센스, 콘솔에서 작동, cmdline 매개 변수 입력 시간을 절약합니다. 다음은 Alt-F7에 의해 호출 된 검색 대화 상자입니다.
업데이트 : 이것은 원래 질문이 있었을 때 사실이 아니었지만 이제 Microsoft는 Linux 용 Windows 하위 시스템을 설치하도록 허용 하고 Windows는 grep을 실행합니다. PowerShell에서 다음을 실행하십시오.
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
훌륭하고 매우 빠른 파일 검색 유틸리티 인 Agent Ransack 은 정규식 검색을 지원합니다. 주로 GUI 유틸리티이지만 명령 줄 인터페이스도 사용할 수 있습니다.
기술적으로 grep이나 명령 줄은 아니지만 Microsoft Visual Studio와 Notepad ++ 에는 정규 표현식을 완벽하게 지원하는 파일에서 찾기 기능이 매우 우수합니다. 명령 줄에서 CygWin 버전의 grep을 사용할 수 있지만 자주 사용하는 것을 발견했습니다.
그렇습니다. 견고한 GUI를 가진 Windows PC 용 프로그램은 하나만 있으며 그것은 나에게 꼭 필요한 유틸리티입니다. 저는 개발자로 일하고 있으며 모든 컴퓨터에서 XFind 프로그램을 먼저 설치합니다. 1997 년에 만들어졌으며 지금까지 버전은 1.0이며 지금까지는 작동하며 최고입니다. 종종 " .cs", " .aspx", " .sct"(Visual FoxPro 양식 코드 파일) 또는 " . *" 에서 일부 문자열을 검색해야 하며 XFind는 모든 파일을 스캔하고 파일을 보여줍니다. 파일에서 문자열이 어디에 있는지 확인할 수 있습니다. XFind에는 일종의 편집기가 있습니다. 이진 파일이면 찾은 문자열이 표시됩니다. 당신이 나와 같은 개발자라면 그것을 사용 해보고 영원히 사용하십시오.
당신은 분명히 많은 다른 권고를 받았습니다.
무료, 타사 유틸리티의 개인적 선택은 다음과 같습니다. 에이전트 Ransack
에이전트 Ransack 다운로드
다소 혼란스러운 이름에도 불구하고 잘 작동하며 다양한 방법으로 파일을 찾을 수 있습니다.
행운을 빕니다
올인원 비지 박스에는 grep / egrep / sed / awk가 포함되어 있습니다.
그것을 얻을 :
업데이트 : 더 이상 사용할 수 없거나 일부 이전
우리는 최근에 PowerGREP를 사용했습니다 수천 개의 파일에서 상당히 발전된 대량 작업에 를 . PDF 파일의 내용에 정규식 검색을 포함하고 PDF 문서를 대규모로 변경합니다.
마누엘 노동으로부터 시간을 절약하고 싶다면 돈 가치가 있습니다. 당신은 내가 생각하기 전에 당신이 그것을 시도 할 수 있습니다.
위에서 언급했듯이 gnuwin32 프로젝트에는 grep의 Windows CLI 버전이 있습니다.
그래픽 인터페이스로 무언가를 원한다면 (오픈 소스) 도구 AstroGrep을 추천합니다 .
Oak Road Systems 에서 제공하는 상용 grep 유틸리티가 있습니다 .
PowerGrep을 추천 합니다
몇 년 전에 전자 검색 프로젝트를 수행해야했습니다. 나는 fisdstr
몇 가지 한계가 있으며, 특히 fisdstr은 결국 실패 할 것이라는 것을 알았습니다.
스크립트는 수십 개의 검색어 / 구문을 사용하여 수천 개의 파일을 검색해야했습니다.
Cygwin의 grep이 훨씬 잘 작동하고 자주 질식하지는 않았지만 궁극적으로 그래픽 인터페이스로 인해 언제 어디서 충돌했는지 쉽게 알 수 있었고 모든 조건부 및 출력에서 편집하기가 쉽기 때문에 PowerGrep에갔습니다. 나는 원했다. 궁극적으로 PowerGrep은이 세 가지 중에서 가장 신뢰할 수있었습니다 .
나는 그것이 오래된 주제라는 것을 알고 있지만 여기에 당신이 할 수있는 또 다른 일이 있습니다. 인터넷에 액세스 할 수없고 사용 가능한 디스크 공간이 제한되어있는 개발자 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
.
나는 오래된 질문을 알고 있지만이 게시물을 보았습니다. 그리고 나는 그것을 인터넷의 집단 기억을 위해 여기에 추가하는 것을 찾았습니다.
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 * :"
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 쉘에서도 사용할 수 있습니다 ...
(이것이 원래 의도라고 생각합니다 ;-))