PowerShell: Select-String'i Kullanın ve Belirli Deseni Hariç Tutun


Dizeler ve dosyalardaki belirli metni bulmak için PowerShell'deki Select-String cmdlet'ini kullanabilirsiniz.

Genellikle, bir dosyadaki belirli bir desen içermeyen tüm satırları seçmek için Select-String cmdlet'ini kullanmak isteyebilirsiniz.

Bunu yapmak için aşağıdaki yöntemleri kullanabilirsiniz:

Yöntem 1: Select-String Kullanın ve Belirli Bir Modeli Hariç Tut

Get-Content employees.txt | Select-String -pattern $my_pattern -NotMatch

Bu özel örnek, employees.txt adlı dosyadaki, $my_pattern değişkeninde belirtilen modeli içermeyen tüm satırları alacaktır.

2. Yöntem: Select-String'i Kullanın ve Birden Çok Belirli Deseni Hariç Tut

Get-Content employees.txt | Select-String -pattern $my_patterns -NotMatch

Bu özel örnek, employees.txt adlı dosyadaki, $my_patterns dizisinde belirtilen kalıplardan herhangi birini içermeyen tüm satırları alacaktır.

Aşağıdaki örnek, bu yöntemlerin her birinin pratikte nasıl kullanılacağını göstermektedir.

Örnek 1: Select-String'i Kullanın ve Belirli Bir Modeli Hariç Tut

Mevcut dizinimizde, bir şirketteki çeşitli çalışanların kimlik değerlerini içeren employees.txt adında bir dosyamız olduğunu varsayalım.

Bu dosyadaki tüm satırları görüntülemek için Get-Content cmdlet'ini kullanabiliriz:

Dosyada yalnızca çalışan kimlik değerinin herhangi bir yerinde “A00” desenini içermeyen satırları almak istediğimizi varsayalım.

Bunu yapmak için aşağıdaki sözdizimini kullanabiliriz:

$my_pattern = "A00"
Get-Content employees.txt | Select-String -pattern $my_pattern -NotMatch

Aşağıdaki ekran görüntüsü bu sözdiziminin pratikte nasıl kullanılacağını göstermektedir:

Bunun yalnızca dosyadaki, satırın herhangi bir yerinde "A00" desenini içermeyen satırları döndürdüğüne dikkat edin.

Örnek 2: Select-String'i Kullanın ve Birden Çok Belirli Kalıbı Hariç Tut

Yalnızca employees.txt dosyasındaki, çalışan kimliği değerinin herhangi bir yerinde aşağıdaki kalıplardan herhangi birini içermeyen satırları almak istediğimizi varsayalım:

  • A00
  • B14
  • C00

Bunu yapmak için aşağıdaki sözdizimini kullanabiliriz:

$my_patterns = @("A00", "B14", "C00")
Get-Content employees.txt | Select-String -pattern $my_patterns -NotMatch

Aşağıdaki ekran görüntüsü bu sözdiziminin pratikte nasıl kullanılacağını göstermektedir:

Bunun yalnızca dosyadaki belirttiğimiz üç kalıptan birini içermeyen satırları döndürdüğüne dikkat edin.

Not: PowerShell'deki Select-String cmdlet'ine ilişkin tüm belgeleri burada bulabilirsiniz.

İlgili makaleler