grep
adalah utilitas pencarian teks yang kuat di Linux, tetapi tidak tersedia di Windows. Meskipun ada port dan solusi pihak ketiga, PowerShell menawarkan ekuivalen bawaan untuk grep
yang akan melakukan pekerjaan yang sama di skrip Anda.
Menggunakan findstr untuk mengambil Pencarian Di PowerShell
Ada beberapa alat pencarian yang berbeda di PowerShell, masing-masing dengan kekuatannya sendiri. Yang paling sederhana adalah findstr
, yang merupakan executable windows asli. Ini berfungsi dengan baik untuk menggantikan grep untuk operasi pencarian baris perintah sederhana. Misalnya, Anda dapat menyalurkan output dari ls
di sini untuk menemukan kecocokan.
ls | findstr "foo"
Anda juga dapat mencari beberapa kata sekaligus, menggunakan wildcard untuk mencocokkan apa pun, dan menggunakan /R
tandai untuk meneruskan ekspresi reguler utama.
ls | findstr /R ba[a-z]\.txt
Namun, jika Anda ingin secara eksplisit mencari dengan spasi, Anda harus menggunakan /C:
bendera:
ls | findstr /C:"foo"
Jika Anda terbiasa dengan baris perintah Linux, dan tidak ingin mengingat perintah baru, Anda dapat mengonfigurasi “grep” menjadi alias untuk findstr
yang akan membiarkan Anda mempertahankan memori otot Anda.
new-alias grep findstr
Menggunakan Select-String untuk mengambil Pencarian di PowerShell
Metode asli lain yang ditawarkan oleh PowerShell adalah Select-String
cmdlet, yang melakukan banyak hal yang sama seperti findstr
tetapi cmdlet PowerShell alih-alih Windows yang dapat dieksekusi.
Ini berarti ini akan bekerja lebih baik dengan skrip PowerShell, dan yang lebih penting mengembalikan outputnya sebagai objek, yang dapat dicetak oleh PowerShell. Ini juga lebih mudah digunakan pada baris perintah, karena penyelesaian tab PowerShell akan berfungsi di sini.
Ini bekerja seperti findstr
dan juga dapat mengambil wildcard dan ekspresi reguler.
ls | Select-String foo
ls | Select-String -Pattern <regexPattern>
Anda dapat menggunakannya Select-String
untuk mengambil teks di dalam file, dengan meneruskannya sebagai -Path
argumen. Anda juga dapat menggunakannya dengan input yang diteruskan dari cmdlet lain seperti Get-Content
.
Select-String -Path ".\foo.txt" -Pattern ba.*
Jika Anda ingin menggunakannya di baris perintah, Anda juga dapat menggunakan alias “grep” untuk akses cepat.