Apa alat grep yang baik untuk Windows? [Tutup]


289

Adakah rekomendasi tentang alat grep untuk Windows? Idealnya yang bisa memanfaatkan OS 64-bit.

Saya mengetahui Cygwin , tentu saja, dan juga menemukan PowerGREP , tetapi saya bertanya-tanya apakah ada permata tersembunyi di luar sana?

Jawaban:


204

Berdasarkan rekomendasi dalam komentar, saya sudah mulai menggunakan grepWin dan ini fantastis dan gratis .


(Saya masih penggemar PowerGREP , tapi saya tidak menggunakannya lagi.)

Saya tahu Anda sudah menyebutkannya, tetapi PowerGREP luar biasa .

Beberapa fitur favorit saya adalah:

  • Klik kanan pada folder untuk menjalankan PowerGREP di atasnya
  • Gunakan ekspresi reguler atau teks literal
  • Tentukan wildcard untuk file yang akan disertakan & dikecualikan
  • Cari & ganti
  • Mode pratinjau bagus karena Anda dapat memastikan Anda mengganti apa yang Anda inginkan.

Sekarang saya menyadari bahwa alat grep lainnya dapat melakukan semua hal di atas. Hanya saja PowerGREP mengemas semua fungsi menjadi GUI yang sangat mudah digunakan.

Dari orang-orang luar biasa yang sama yang membawakan Anda RegexBuddy dan yang saya tidak punya afiliasi selain mencintai barang-barang mereka. (Perlu dicatat bahwa RegexBuddy menyertakan versi dasar grep (untuk Windows) itu sendiri dan harganya jauh lebih murah daripada PowerGREP.)


Solusi tambahan

Perintah Windows yang ada

Implementasi perintah Linux pada Windows

Grep tools dengan antarmuka grafis

Alat Grep tambahan


4
Saya ingin menemukan open source grep gui yang mudah digunakan & fitur lengkap seperti PowerGREP tapi saya belum menemukannya :). Saya sudah menginstal Cygwin dan menggunakan grep dari itu juga.
Mark Biek

21
@Wells - polos tua * nix grep di Windows gratis melalui Cygwin atau GnuWin32. FindStr dan Find juga dikirimkan bersama Windows. Grep dengan GUI yang hebat, kemampuan untuk mengganti, dan undo terintegrasi, serta banyak fitur lainnya ... yeah ... yang membuat Anda sedikit tambahan.
Mike Clark

11
@Wells, @Mike Clark, @Mark Biek: Saya kira mungkin tidak ada alat grep GUI gratis yang bagus untuk Windows ketika jawaban ini diposting, tetapi itu tidak lagi benar. grepWin memiliki semua fitur yang tercantum dalam jawaban ini, dan mungkin ada pesaing lain sekarang juga.
John Y

9
@Nah, membenci Windows karena alat Grep adalah $ 159 seperti membenci mobil karena tikar mahal.
md1337

9
@Well and upvoters: Apa dagingnya? Beberapa alat GREP lain untuk Windows sama gratisnya dengan unix / linux. Memang, inilah yang saya sukai tentang ekosistem Windows - banyak yang gratis, jika itu kriteria utama Anda, DAN ekosistem sering kali mendukung pengembang yang membayar untuk menjelajahi sejumlah fungsionalitas yang diperluas, seperti dengan PowerGREP. PowerGREP mungkin bukan secangkir teh semua orang (kadang-kadang UI-nya luar biasa), tetapi sifatnya yang rumit memang memiliki kegunaan.
gwideman

322

FINDSTR cukup kuat, mendukung ekspresi reguler dan memiliki keunggulan karena sudah ada di semua mesin Windows.

c:\> FindStr /?

Searches for strings in files.

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         Matches pattern if at the beginning of a line.
  /E         Matches pattern if at the end of a line.
  /L         Uses search strings literally.
  /R         Uses search strings as regular expressions.
  /S         Searches for matching files in the current directory and all
             subdirectories.
  /I         Specifies that the search is not to be case-sensitive.
  /X         Prints lines that match exactly.
  /V         Prints only lines that do not contain a match.
  /N         Prints the line number before each line that matches.
  /M         Prints only the filename if a file contains a match.
  /O         Prints character offset before each matching line.
  /P         Skip files with non-printable characters.
  /OFF[LINE] Do not skip files with offline attribute set.
  /A:attr    Specifies color attribute with two hex digits. See "color /?"
  /F:file    Reads file list from the specified file(/ stands for console).
  /C:string  Uses specified string as a literal search string.
  /G:file    Gets search strings from the specified file(/ stands for console).
  /D:dir     Search a semicolon delimited list of directories
  strings    Text to be searched for.
  [drive:][path]filename
             Specifies a file or files to search.

Use spaces to separate multiple search strings unless the argument is prefixed
with /C.  For example, 'FINDSTR "hello there" x.y' searches for "hello" or
"there" in file x.y.  'FINDSTR /C:"hello there" x.y' searches for
"hello there" in file x.y.

Regular expression quick reference:
  .        Wildcard: any character
  *        Repeat: zero or more occurances of previous character or class
  ^        Line position: beginning of line
  $        Line position: end of line
  [class]  Character class: any one character in set
  [^class] Inverse class: any one character not in set
  [x-y]    Range: any characters within the specified range
  \x       Escape: literal use of metacharacter x
  \<xyz    Word position: beginning of word
  xyz\>    Word position: end of word

Contoh penggunaan: findstr text_to_find *atau untuk mencari secara rekursiffindstr /s text_to_find *


2
Yang tidak dimiliki FINDSTR adalah opsi untuk menampilkan hanya jumlah baris yang berisi string. (seperti grep -c) Jika Anda membutuhkan ini, Anda dapat menggunakan FIND / C.
Ra.

2
Jika Anda ingin daya kembali FINDSTR (dan pola Anda bukan regex), Anda dapat selalu, dengan beberapa pengulangan, rantai dua perintah bersama-sama: findstr / s ".ini" * .rlog | find / c ".ini"
Ray Hayes

10
Findstr tidak memiliki dukungan RegEx sepenuhnya.
caltuntas

5
.. posting asli tidak meminta RegEx khusus!
Ray Hayes

24
OK findstr itu bukan grep, seperti yang ditunjukkan oleh beberapa komentator lainnya. Tetapi saya bahkan tidak tahu bahwa itu ada sehingga Anda memberi +1 kepada Pak yang baik karena telah mempostingnya!
T.Rob

107

GrepWin Gratis dan sumber terbuka (GPL)

masukkan deskripsi gambar di siniSaya telah menggunakan grepWin yang ditulis oleh salah satu orang tortoisesvn. Apakah pekerjaan di Windows ...

http://stefanstools.sourceforge.net/grepWin.html


2
Dan ini gratis dan mampu mencari di direktori / file tersembunyi yang tidak dapat dilakukan
PowerGrep

3
Tampaknya tidak memiliki antarmuka baris perintah.
Andreas Haferburg

2
Itu bagus tetapi hanya memberikan satu baris konteks, dan Anda tidak dapat melihat konteks itu sampai selesai seluruh pencarian.
Matthew Lock

2
Sepertinya alat yang bagus dan sederhana. Tapi saya butuh hasil dalam file dan sepertinya tidak memberi saya opsi untuk mengekspor. Untuk alasan itu saja saya pergi dengan AstroGrep.
Ross

tidak mencari di pdf
JinSnow

53

Pembaruan Juli 2013:

Alat grep lain yang sekarang saya gunakan sepanjang waktu di Windows adalah AstroGrep :

Kehebatan AstroGrep

Kemampuannya untuk menunjukkan kepada saya lebih dari sekedar pencarian baris (yaitu --context = NUM ​​dari grep baris-perintah) sangat berharga.
Dan itu cepat. Sangat cepat, bahkan pada komputer lama dengan drive non- SSD (saya tahu, mereka biasa melakukan hard drive ini dengan disk berputar , disebut piring - piring , gila kan?)

Ini gratis.
Ini portabel (arsip zip sederhana untuk unzip).


Jawaban asli Oktober 2008

teks alternatifGnu Grep baik-baik saja

Anda dapat mengunduhnya misalnya di sini: ( situs ftp )

Semua opsi yang biasa ada di sini.

Itu, dikombinasikan dengan gawk dan xargs (termasuk 'find', dari GnuWin32 ), dan Anda dapat benar-benar skrip seperti Anda berada di Unix!

Lihat juga opsi yang saya gunakan untuk melakukan grep secara rekursif :

grep --include "*.xxx" -nRHI "my Text to grep" *

Saya baru saja mulai mencari pengganti Gnu Grep karena versi windows sepertinya tidak dapat menangani file teks 10 Mb saya. Itu hanya duduk di sana dan berpura-pura tidak menemukan apa pun. Jika saya mengurangi ukuran file itu mulai berfungsi.
Peter M

Halo VonV, tautan "opsi biasa" Anda menjadi: 404 - Halaman Tidak Ditemukan. Silakan pertimbangkan untuk mengedit jawaban Anda.
eeerahul

1
@eeerahul tautan dipulihkan, dan contoh ditambahkan
VonC

AstroGrep bagus tetapi sayangnya saat ini tidak memiliki fitur 'Cari & Ganti', yang merupakan deal breaker bagi saya
asukasz Wiatrak

Tidak memiliki fungsi "ganti"
XristosK

30

Pilih-String cmdlet PowerShell baik-baik saja di v1.0, tetapi secara signifikan lebih baik untuk v2.0 . Memiliki PowerShell bawaan ke versi Windows terbaru berarti keterampilan Anda di sini akan selalu berguna, tanpa terlebih dahulu menginstal sesuatu.

Parameter baru ditambahkan ke Select-String : Select-String cmdlet sekarang mendukung parameter baru, seperti:

  • -Konteks: Ini memungkinkan Anda melihat garis sebelum dan sesudah garis pertandingan
  • -AllMatches: yang memungkinkan Anda melihat semua pertandingan dalam satu baris (Sebelumnya, Anda hanya bisa melihat pertandingan pertama dalam satu baris)
  • -NotMatch: Setara dengan grep -vo
  • -Encoding: untuk menentukan pengkodean karakter

Saya merasa perlu untuk membuat fungsi gciruntuk Get-ChildItem -Recurse ., dengan kecerdasan untuk melewati parameter dengan benar, dan alias ssuntuk Select-String. Jadi, Anda menulis:

gcir * .txt | ss foo


3
Contoh grep -R equivilant: Get-ChildItem -recurse -include * .txt | Select-String -CaseSenstive "SomeString"
jslatts

6
Saya sangat suka banyak fungsionalitas yang diperkenalkan di PS, tetapi mengapa setiap perintah harus lebih panjang dari program COBOL rata-rata?
evilcandybag

3
@ evilcandybag: Berkat autocomplete yang hebat, termasuk autocomplete pada nama parameter, mengetik baris perintah PowerShell cepat & mudah, dan saya bisa membaca hasilnya.
Jay Bazuzi

1
@ jslatts: atau Anda bisa menggunakan alias dan nama parameter parsial dan itu akan menjadils . *.txt -r| sls -ca "SomeString"
Rynant

1
Adalah alias yang ada slsuntuk Select-Stringbenar-benar terlalu lama?
Joey

23

Ini mungkin tidak persis jatuh ke dalam kategori 'grep', tapi saya tidak bisa bertahan di Windows tanpa utilitas yang disebut AgentRansack . Ini adalah utilitas "find in files" berbasis gui dengan dukungan regex. Sangat mudah untuk mengklik kanan pada folder, tekan "ransack .." dan temukan file yang mengandung apa yang Anda cari. Sangat cepat juga.


Sayangnya, itu tidak dapat membuka editor teks eksternal pada baris yang relevan.
Pawel Furmaniak

1
Coba versi berbayar untuk yang disebut Filelocator Pro, sejauh ini merupakan alat grep terbaik yang pernah saya gunakan.
Ian Stanway

Apakah Filelocator pro melakukan penggantian?
alimack

Itu punya antarmuka yang sangat bagus, apakah itu penggantian?
alimack

Juga sekarang disebut Filelocator lite
alimack

19

Baregrep ( Baretail juga bagus)


tidak bekerja pada win7 64 bit; (
Daniel Magnusson

Saya cukup yakin mereka sudah memperbaikinya sekarang. Keluhan utama saya terhadap BareTail adalah bahwa Anda tidak dapat "memfilter" log untuk menyembunyikan garis (bukan hanya warna) yang tidak relevan.
Ed Brannin

1
Anda dapat memfilter dan mencari dengan BareTailPro, hanya saja tidak dengan versi gratis (BareTail).
Clay

Saya cukup yakin mereka belum memperbaikinya sekarang, karena belum diperbarui sejak 2006.
alldayremix

4
Ini berfungsi dengan baik pada windows 7 Pro 64bit di sini.
cb88

17

Sudah beberapa tahun sejak Anda mengajukan pertanyaan, tetapi saya akan merekomendasikan AstroGrep ( http://astrogrep.sourceforge.net ).

Ini gratis, open source, dan memiliki antarmuka yang sederhana. Saya menggunakannya untuk mencari kode setiap saat.


tetapi tidak mencari dalam pdf
JinSnow

16

PowerShell telah disebutkan beberapa kali. Inilah cara Anda akan menggunakannya dengan benar:

Get-ChildItem -recurse -include *.txt | Select-String -CaseSensitive "SomeString"

Itu secara rekursif mencari semua file teks di pohon direktori saat ini SomeStringdengan sensitivitas kasus.

Lebih baik lagi, jalankan ini:

function pgrep { param([string]$search, [string]$inc) Get-ChildItem -recurse -include $inc | Select-String -CaseSensitive $search }

Kemudian lakukan:

pgrep SomeStringToSearch *.txt

Kemudian untuk benar-benar membuatnya ajaib, tambahkan fungsi alias ke Profil PowerShell Anda dan Anda hampir dapat menghilangkan rasa sakit karena tidak memiliki alat baris perintah yang tepat.



14

ack bekerja dengan baik di Windows (jika Anda memiliki Perl ). Saya merasa lebih baik daripada grep untuk banyak kegunaan.



10

dnGREP adalah alat grep open source untuk Windows. Ini mendukung sejumlah fitur keren termasuk:

  • Batalkan untuk diganti
  • Kemampuan untuk mencari dengan mengklik kanan pada folder di explorer
  • Opsi pencarian lanjutan seperti pencarian fonetik dan xpath
  • Cari di dalam file PDF, arsip, dan dokumen Word

IMHO, ia memiliki antarmuka yang bagus dan bersih juga :)


1
Saya sudah mencoba beberapa alat grep yang disarankan dan, bagi saya, dnGrep menang.
flobadob

Itu mencari dalam pdf tetapi tidak epub
JinSnow

Sunting: itu dapat mencari epub. Anda harus menambahkannya seperti ini: github.com/dnGrep/dnGrep/issues/200
JinSnow

7

Saya selalu menggunakan WinGREP , tapi saya punya masalah dengan itu tidak melepaskan file.


2
Saya telah menggunakan wingrep selama beberapa tahun, itu bagus dengan pengecualian bahwa kotak pilih direktori terlalu kecil
Cruachan

The lisensi mengharuskan Anda untuk membayar untuk itu setelah eval 30day.
chip

Ini memiliki fitur bagus yang tidak dimiliki banyak alat grep, kemampuan untuk membalikkan pertandingan. Berguna untuk menemukan file HTML tanpa sesuatu di dalamnya, katakanlah.
Matthew Lock

Saya telah memperhatikan fitur WinGrep yang sangat menjengkelkan. Tampaknya menyimpan kunci file pada semua pertandingan yang dibuat, dan jadi jika Anda mencoba dan menghapus salah satu file di Windows Explorer Anda tidak bisa sampai Anda menutup WinGrep.
Matthew Lock

Jika bisa mencari di hasil pencarian, mempersempit daftar lebih jauh, itu akan menjadi alat yang ideal bagi saya.
Shamil


7

Saya telah berhasil menggunakan utilitas GNU untuk Win32 untuk beberapa waktu dan memiliki grep yang baik serta ekor dan utilitas gnu berguna lainnya untuk win32. Saya menghindari shell yang dikemas dan cukup menggunakan executables tepat di command prompt win32.

Ekor yang dikemas adalah aplikasi kecil yang cukup bagus juga.


6

Saya penulis Aba Search and Replace. Sama seperti PowerGREP, ia mendukung ekspresi reguler, menyimpan pola untuk penggunaan lebih lanjut, membatalkan untuk penggantian, pratinjau dengan highlight sintaks untuk HTML / CSS / JS / PHP, pengkodean yang berbeda, termasuk UTF-8 dan UTF-16.

Dibandingkan dengan PowerGREP, GUI kurang berantakan. Aba langsung mulai mencari saat Anda mengetikkan pola (pencarian tambahan), sehingga Anda dapat bereksperimen dengan ekspresi reguler dan segera melihat hasilnya.

Anda disambut untuk mencoba alat saya; Saya akan dengan senang hati menjawab pertanyaan.


4

Saya ingin alat grep gratis untuk Windows yang memungkinkan Anda untuk mengklik kanan pada folder dan melakukan pencarian regex setiap file - tanpa layar cerewet.

Berikut ini adalah solusi cepat berdasarkan yang findstrdisebutkan dalam posting sebelumnya.

Buat file teks di suatu tempat di hard drive Anda tempat Anda menyimpan alat berumur panjang. Ganti nama menjadi .bat atau .cmd dan rekatkan yang berikut ke dalamnya:

@echo off
set /p term="Search term> "
del %temp%\grepresult.txt
findstr /i /S /R /n /C:"%term%" "%~1\*.*" > "%temp%\grepresult.txt"
start notepad "%temp%\grepresult.txt"

Kemudian browse ke folder SendTo. Pada Windows 7, jelajahi %APPDATA%\Microsoft\Windows\SendTodan seret pintasan file batch ke folder SendTo itu.

Saya mengganti nama pintasan agar 1 GREPtetap di atas daftar SendTo.

Hal-hal yang ingin saya lakukan selanjutnya adalah mem-pipe output findstrmelalui sesuatu yang akan menghasilkan file html sehingga Anda bisa mengklik pada setiap baris output untuk membuka file itu. Juga, saya tidak berpikir itu berfungsi dengan cara pintas ke folder. Saya harus memeriksa parameter dan melihat apakah mengandung ".lnk".



3

Saya menggunakan grep Borland selama bertahun-tahun tetapi hanya menemukan pola yang tidak cocok. Eeeks. Apa lagi yang belum ditemukan selama bertahun-tahun? Saya menulis pengganti pencarian teks sederhana yang melakukan rekursi seperti grep - ini FS.EXE pada source forge.

grep gagal ...

C:\DEV>GREP GAAPRNTR \SOURCE\TPALIB\*.PRG
<no results>

windows findstr berfungsi ...

C:\DEV>FINDSTR GAAPRNTR \SOURCE\TPALIB\*.PRG
\SOURCE\TPALIB\TPGAAUPD.PRG:ffSPOOL(cRPTFILE, MEM->GAAPRNTR, MEM->NETTYPE)
\SOURCE\TPALIB\TPPRINTR.PRG:    AADD(mPRINTER,   TPACONFG->GAAPRNTR)
\SOURCE\TPALIB\TPPRINTR.PRG:               IF TRIM(TPACONFG->GAAPRNTR) <> TRIM(mPRINTER[2])
\SOURCE\TPALIB\TPPRINTR.PRG:                   REPLACE TPACONFG->GAAPRNTR WITH mPRINTER[2]

3

Alat pilihan saya adalah Windows Grep yang dinamai dengan tepat :

  • GUI sederhana yang bagus
  • mendukung pencarian dan penggantian
  • dapat menunjukkan garis-garis di sekitar garis yang ditemukan
  • dapat mencari di dalam kolom dalam CSV dan file dengan lebar tetap

Sayangnya dihentikan, saya telah menggunakannya selama bertahun-tahun.
alimack

@alimack Ya, saya perhatikan ini sendiri baru-baru ini. Namun, alat ini masih berfungsi (setidaknya untuk Windows 7), dan masih dapat diunduh dari CNET. Sayang sekali, itu alat yang cukup bagus.
John N

Mencari penggantinya, PowerGREP menjanjikan tetapi antarmuka yang jelek dan sangat mahal. Mencoba grepWin, tulang terlalu telanjang, Filelocator tampaknya tidak melakukan penggantian teks. Saran diterima - terutama seperti melihat hasil sebelum saya berkomitmen untuk mengganti.
alimack

2

Pilih-string PowerShell mirip, itu bukan opsi dan semantik yang sama, tetapi masih kuat.


2

Jika Anda ingin alat Windows Grep yang mudah digunakan, saya membuat yang disebut P-Grep yang telah saya unduh secara gratis dari situs web saya: www.adjutantit.com - menu beranda, unduhan.

Windows Grep tampaknya memiliki masalah dengan sejumlah besar file, jadi saya menulis sendiri - yang tampaknya lebih dapat diandalkan. Anda dapat memilih folder, klik kanan dan kirim ke P-Grep. Folder sendto tidak akan dihapus saat instalasi.


2

Pilihan lain yang baik adalah MSYS . Ini memberi Anda banyak utilitas GNU lain untuk memungkinkan Anda menjadi lebih produktif.


1

Saya telah menggunakan AJC Grep setiap hari selama bertahun-tahun. Satu-satunya batasan utama yang saya temukan adalah jalur file dibatasi hingga 255 karakter dan berhenti ketika bertemu satu, bukan hanya mengeluarkan peringatan. Ini menjengkelkan tetapi tidak sering terjadi.

Saya menggunakannya pada Windows 7 Ultimate 64-bit, jadi kredensial 64-bitnya baik-baik saja.


1

GREP untuk Windows

Saya sudah menggunakannya selamanya dan untungnya masih tersedia. Ini sangat cepat dan sangat kecil.


Apakah bahkan ada GUI? Saya hanya menggunakannya dari baris perintah jadi saya tidak pernah menyadari.
dibakar

Saya sedang mencari cara sederhana untuk menunjukkan garis sebelum dan sesudah pertandingan dan ini berhasil. Misalnya: jalankan 'netstat -anb | grep -B1 22 'untuk mengetahui program mana yang mendengarkan port 22.
Jan Ehrhardt

0

Jika tidak ada solusi yang sesuai dengan yang Anda cari, mungkin Anda bisa menulis pembungkus untuk FindStr yang melakukan persis seperti yang Anda butuhkan?

FindStr cukup bagus, jadi seharusnya hanya mengetuk GUI (jika Anda menginginkannya) dan menyediakan beberapa fitur tambahan (seperti menggabungkannya dengan Find untuk menemukan jumlah file yang berisi string tertentu [disebutkan di atas]).

Ini, tentu saja, mengasumsikan Anda memiliki persyaratan, waktu, dan kecenderungan untuk melakukan ini!


0

Saya telah menginstal Cygwin di mesin saya dan meletakkan direktori Cygwin bin di jalur lingkungan saya, sehingga grg Cygwin berfungsi seperti biasa di baris perintah yang menyelesaikan semua kebutuhan skrip saya untuk grep saat ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.