Apakah ada utilitas serupa yang grep
tersedia dari Prompt Perintah Windows, atau adakah alat pihak ketiga untuk itu?
Apakah ada utilitas serupa yang grep
tersedia dari Prompt Perintah Windows, atau adakah alat pihak ketiga untuk itu?
Jawaban:
Ada alat baris perintah yang disebut FINDSTR
yang datang dengan semua sistem operasi Windows NT-kelas (ketik FINDSTR /?
ke jendela Command Prompt untuk informasi lebih lanjut) Ini tidak mendukung semuanya grep
, tetapi mungkin cukup untuk kebutuhan Anda.
netstat -n | FINDSTR 3389
PowerShell (termasuk sebagai standar pada Windows 7 / 2008R2, opsional untuk XP / 2003 / Vista / 2008) yang mencakup select-string
cmdlet untuk tujuan ini.
Grep untuk Windows oleh Proyek GnuWin (2014-10-02: Sudah usang, lihat komentar di bawah)
seperti yang disebutkan, findstr berfungsi dengan baik. contoh:
C:> dir | findstr Windows
11/06/2013 09:55 PM Windows
Cygwin grep dan banyak lagi;)
Saya juga menemukan satu cara lagi untuk memanfaatkan fungsi seperti GREP di Windows 7 dan di atasnya tanpa aplikasi tambahan untuk menginstal dan pada sistem yang lebih lama Anda dapat menggunakan install Powershell.
Di Powershell , Pengguna dapat menggunakan Where-Object yang memiliki serangkaian fitur yang cukup komprehensif yang menyediakan semua fungsi GREP plus lebih banyak.
Semoga ini bisa membantu.
Saya terkejut tidak ada yang menyebutkan FINDSTR . Saya bukan pengguna grep, tetapi findstr melakukan apa yang saya perlukan, memfilter file dan stdin, dengan beberapa dukungan regex primitif. Kapal dengan Windows dan semua itu. (Sunting: Yah seseorang memang menyebutkan findstr, sudah terlambat saya kira)
GnuWin32 layak disebutkan, ia menyediakan versi asli Win32 dari semua alat linux standar, termasuk grep, file, sed, groff, indent, dll.
Dan ini terus diperbarui ketika versi baru dari alat ini dirilis.
Di Windows saya menggunakan Far Manager untuk pencarian file. BSD berlisensi, bekerja di konsol, menghemat waktu mengetik parameter cmdline. Berikut adalah dialog pencariannya yang dipanggil oleh Alt-F7.
Pembaruan: Ini tidak benar ketika pertanyaan awalnya diajukan, tetapi sekarang Microsoft memungkinkan satu Instal Subsistem Windows untuk Linux , dan Windows kemudian akan menjalankan grep. Di PowerShell, jalankan:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
UnxUtils adalah seperangkat utiliti Unix yang berjalan pada Windows. Memiliki grep, sed, gawk, dll.
Utilitas pencarian file yang sangat baik dan sangat cepat, Agent Ransack , mendukung pencarian ekspresi reguler. Utamanya adalah utilitas GUI, tetapi antarmuka baris perintah juga tersedia.
Meskipun tidak secara teknis grep atau baris perintah, Microsoft Visual Studio dan Notepad ++ memiliki fitur Find in Files yang sangat baik dengan dukungan ekspresi reguler penuh. Saya menemukan diri saya sering menggunakannya walaupun saya juga memiliki versi grep CygWin tersedia di baris perintah.
Saya akan menambahkan $ 0,02 ke utas ini. dnGREP adalah alat grep open source untuk windows yang mendukung undo, integrasi windows explorer, mencari di dalam PDF, ritsleting, DOC, dan banyak hal lainnya ...
Ya hanya ada satu program untuk PC Windows yang memiliki GUI yang solid dan ini sangat penting bagi saya. Saya bekerja sebagai pengembang dan di setiap komputer yang saya miliki, pertama-tama instal program XFind. Itu dibuat pada tahun 1997 dan sampai sekarang versi 1.0 dan sampai sekarang berfungsi dan ini adalah yang terbaik. Seringkali saya perlu mencari beberapa string dalam " .cs", " .aspx", " .sct" (file kode formulir Visual FoxPro) atau hanya " . *" Dan XFind memindai semua file dan menunjukkan kepada saya file dan hal besar lainnya adalah Anda dapat melihat di mana string dalam file. XFind juga memiliki beberapa jenis editor. Jika file biner, itu akan menunjukkan Anda string yang ditemukan. Cobalah dan gunakan selamanya jika Anda adalah pengembang seperti saya.
Anda jelas mendapat banyak rekomendasi berbeda.
Pilihan pribadi saya untuk Utilitas 3 Pihak Gratis adalah: Agent Ransack
Agent Ransack Unduh
Meskipun namanya agak membingungkan, ia berfungsi dengan baik dan dapat digunakan dalam berbagai cara untuk menemukan file.
Semoga berhasil
all-in-one busybox berisi grep / egrep / sed / awk dan BANYAK lagi
dapatkan dari:
Pembaruan: tidak lagi tersedia - atau lebih lama
Jika Anda tidak keberatan dengan produk berbayar, PowerGREP adalah favorit pribadi saya.
Kami baru-baru ini menggunakan PowerGREP untuk beberapa operasi massal yang cukup maju di ribuan file. Termasuk pencarian regex dalam konten file PDF, dan mengubah dokumen PDF dalam skala besar.
Nilainya uang jika Anda ingin menghemat waktu dari tenaga kerja manuel. Anda dapat mencobanya sebelum membeli.
Sudah lama saya tidak menggunakannya, tetapi Borland (Embarcadero sekarang) menyertakan grep baris perintah dengan kompiler C / C ++ mereka. Untuk beberapa waktu, mereka telah menyediakan versi 5.5 mereka sebagai unduhan gratis setelah mendaftar.
Ada utilitas grep komersial yang tersedia dari Oak Road Systems .
Saya merekomendasikan PowerGrep
Saya harus melakukan proyek e-discovery beberapa tahun yang lalu. Saya menemukan bahwa fisdstr
ada beberapa keterbatasan, terutama fisdstr akhirnya akan gagal
skrip harus mencari ribuan file menggunakan beberapa lusin istilah / frasa pencarian.
Grep Cygwin bekerja jauh lebih baik , itu tidak sering tersedak, tetapi akhirnya saya pergi ke PowerGrep karena antarmuka grafis membuatnya lebih mudah untuk mengetahui kapan dan di mana crash, dan juga sangat mudah untuk mengedit di semua persyaratan dan output yang Aku ingin. Akhirnya PowerGrep adalah yang paling dapat diandalkan dari ketiganya.
Saya tahu bahwa ini adalah topik yang agak lama tetapi, ini adalah hal lain yang dapat Anda lakukan. Saya bekerja pada VM pengembang tanpa akses internet dan ruang disk kosong yang cukup terbatas, jadi saya memanfaatkan java yang diinstal di dalamnya.
Kompilasi program java kecil yang mencetak pertandingan regex ke konsol. Letakkan botol di suatu tempat di sistem Anda, buat batch untuk menjalankannya dan tambahkan folder ke variabel PATH Anda:
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 (bersama dengan jgrep.jar):
@echo off
java -cp c:\jgrep\jgrep.jar com.jgrep.JGrep %*
dan tambahkan c: \ jgrep di akhir variabel lingkungan PATH.
Sekarang cukup menelepon jgrep "expression" file.txt
dari mana saja.
Saya perlu mencetak beberapa grup tertentu dari ekspresi saya sehingga saya menambahkan pengubah dan menyebutnya seperti jgrep -printGroup=1 "expression" file.txt
.
Saya menyadari itu pertanyaan lama tetapi saya menemukan posting ini mencari jawaban. Dan saya telah menemukan satu sehingga menambahkannya di sini untuk memori internet kolektif
Powershell: Select-String Module: Microsoft.PowerShell.Utility
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string
dan posting blog informatif dengan ujian tingkat lanjut: "Bagaimana cara" grep "di PowerShell" https://antjanus.com/blog/web-development-tutorials/how-to-grep-in-powershell/
Contoh sederhana dari posting blog itu: cat package.json | Select-String -Paket web ls ./src/components/ | Select-String -Pattern View
C:> cat post.md | Select-String -Pattern "^ \ w *:"
Gunakan Cygwin ...
ini memiliki versi 32 dan 64 bit
dan berfungsi baik dari Windows 2000 (*)
hingga Windows 10 atau Server 2019
Saya menggunakan Cygwin untuk waktu yang lama ...
dan baru-baru ini mencoba untuk menggantikan dengan Windows-Linux-Subsystems ...
tidak lama ...
Saya segera kembali ke Cygwin lagi ...
jauh lebih fleksibel, terkendali, dan kaya ...
juga kurang mengganggu ...
cukup tambahkan \ bin ke path ...
dan Anda dapat menggunakannya di Windows / Batch / Powershell ...
atau di DOS-Box ... atau di Powershell-Box ...
Anda juga dapat menginstal banyak paket hebat
yang benar-benar berfungsi ... seperti nginX atau PHP ... Saya bahkan menggunakan paket Cygwin PHP di IIS saya ...
Sebagai bonus, Anda juga dapat menggunakannya dari bash shell ...
(Saya pikir ini adalah maksud asli ;-))