Select-String Cmdlet'i Kullanarak PowerShell'de Grep


Linux/Unix'te grep komutu, bir günlük dosyasındaki bir metni (dize) veya hataları bulmak için kullanılır. Grep, başka bir komutun çıktısında herhangi bir veri bulmanızı/seçmenizi sağlar:

command | grep search

PowerShell'de, bir dosyada bir metin dizesi bulmak için Select-String cmdlet'ini kullanabilirsiniz.

Örneğin, aşağıdaki komut bir metin dosyasında veya stdout'ta ERROR içeren tüm satırları görüntüler:

Select-String -Path c:\tmp\makeapp_sxtracesxs.txt -Pattern "ERROR"

Komut, aradığınız metni içeren satır sayısını ve değerlerini göstermiştir.

Tümünde bir dize aramak istiyorsanız

TXT

belirli bir dizindeki dosyalar, aşağıdaki komutu çalıştırın:

Select-String -Path c:\tmp\*.txt -Pattern "ERROR"

Bir klasördeki tüm dosyaları aramak istiyorsanız bu komutu kullanabilirsiniz. Örneğin, bu komut, Exchange Server'da aktarım (SMTP) ve ileti izleme günlüklerini aramak için yararlı olabilir.

Hariç Tut ve Dahil Et seçeneklerini kullanarak, belirli dosyaları aramaya dahil edebilir veya hariç tutabilirsiniz. Aşağıdaki komut, adlarında kopya içermeyen tüm TXT ve LOG dosyalarını arayacaktır:

$path = "c:\tmp\*"
Select-String -Path $path -Pattern "ERROR" -Include "*.txt","*.log" -Exclude "*copy*"

Önceki örnek, yalnızca belirtilen dizinde bir metin arar. İç içe geçmiş dizinlerdeki dosyaları yinelemeli olarak aramak için Get-ChildItem cmdlet'ini kullanın:

Get-ChildItem -Path 'c:\tmp\' -Recurse -include "*.mp3","*.avi" -ErrorAction SilentlyContinue | Select-String -SimpleMatch "ERROR","WARNING"

İlgili makaleler