回答:
FINDSTR
すべてのWindows NTクラスのオペレーティングシステムに付属しているコマンドラインツールがあります(FINDSTR /?
詳細については、コマンドプロンプトウィンドウに入力してください)grep
。
netstat -n | FINDSTR 3389
GnuWin ProjectによるGrep for Windows(2014-10-02:時代遅れです。下のコメントを参照してください)
Cygwin grepなど;)
また、Windows 7以降でGREPのような機能を利用するもう1つの方法を見つけました。追加のアプリケーションをインストールする必要はなく、古いシステムでは、Powershellのインストールを使用できます。
ではPowerShellの、ユーザーが使用することができますどこで、オブジェクトを、それがプラスよりGREPのすべての機能を提供機能の非常に包括的なセットを持っています。
それが役に立てば幸い。
GnuWin32は言及する価値があり、grep、file、sed、groff、indentなどを含むすべての標準LinuxツールのネイティブWin32バージョンを提供します。
また、これらのツールの新しいバージョンがリリースされると、常に更新されます。
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用のプログラムは1つしかなく、それは私にとって重要なユーティリティです。私は開発者として働いており、私が持っているすべてのコンピューターで、まずXFindプログラムをインストールします。それは1997年に作成され、現在までのバージョンは1.0であり、現在まで機能しており、最高です。" .cs"、 " .aspx"、 " .sct"(Visual FoxProフォームコードファイル)または単に "。*"の一部の文字列を検索する必要があることがよくあり、XFindはすべてのファイルをスキャンしてファイルを表示します。文字列がファイルのどこにあるかを確認できます。XFindには、ある種のエディターもあります。バイナリファイルの場合は、見つかった文字列が表示されます。それを試してみて、あなたが私のような開発者なら、それを永遠に使ってください。
あなたは明らかに多くの異なる推奨を得ています。
私の個人的な無料のサードパーティユーティリティの選択は、次のとおりです。Agent Ransack
Agent Ransack Download
その名前はやや混乱を招きますが、うまく機能し、さまざまな方法でファイルを検索できます。
幸運を
オールインワンのbusyboxには、grep / egrep / sed / awkなどが含まれています
それを得る:
更新:利用できなくなりました-または一部の古い
Oak Road Systemsから市販のgrepユーティリティを入手できます。
PowerGrepをお勧めします
私は数年前に電子情報開示プロジェクトを行わなければなりませんでした。それにfisdstr
はいくつかの制限があり、特にfisdstrは最終的に失敗することがわかりました
スクリプトは、数十の検索語句を使用して数千のファイルを検索する必要がありました。
Cygwinのgrepははるかにうまく機能しましたが、頻繁に詰まることはありませんでしたが、グラフィカルインターフェースによっていつどこでクラッシュしたかがわかりやすくなり、すべての条件文と出力で編集が非常に簡単だったため、最終的にはPowerGrepに行きました。私は欲しかった。最終的に、PowerGrepは 3つの中で最も信頼性が高かった。
少し古いトピックであることは承知していますが、これはあなたができる別のことです。私はインターネットにアクセスせず、空きディスク容量が非常に限られている開発者VMで作業しているため、JavaがインストールされているJavaを利用しました。
正規表現の一致をコンソールに出力する小さなJavaプログラムをコンパイルします。jarをシステムのどこかに配置し、バッチを作成してそれを実行し、フォルダーを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 %*
そしてc:\ jgrepを追加しますPATH環境変数の最後にます。
今すぐ電話して jgrep "expression" file.txt
、どこからでもます。
式からいくつかの特定のグループを出力する必要があったので、修飾子を追加してのように呼び出しましたjgrep -printGroup=1 "expression" file.txt
。
私は古い質問に気づきましたが、答えを求めてこの投稿に出くわしました。そして私はそれを見つけたので、ここにそれを集合的なインターネットメモリのために追加しました
Powershell:Select-Stringモジュール:Microsoft.PowerShell.Utility
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string
高度な例を含む有益なブログ投稿:「PowerShellで「grep」を実行する方法」 https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/
そのブログ投稿の簡単な例:cat package.json | Select-String -Pattern webpack ls ./src/components/ | 文字列の選択-パターンビュー
C:> cat post.md | Select-String -Pattern "^ \ w *:"
Cygwinを使用...
32ビットと64ビットのバージョンが
あり、Windows 2000(*)
からWindows 10またはServer 2019まで正常に動作します
私は長い間Cygwinを使用しています...
そして最近、Windows-Linux-Subsystemsで置き換えようとしました...
長い間...
私はすぐに再びCygwinに戻りました...
はるかに柔軟で、制御可能で、リッチ...
また、煩わしさも少ない...
パスに\ binを追加するだけで
、Windows / Batch / Powershell ...
またはDOS-Box ...またはPowershell -Box ... で任意のウェアを使用できます。
また、
nginXやPHPなど、実際に機能する大量の優れたパッケージをインストールすることもできます。IISでCygwin PHPパッケージを使用します...
おまけとして、washはbashシェルからも使用できます...
(これは元々の意図だったと思います;-))