lianenschwinger
Goto Top

Powershell select-string -pattern

Hallo,

ich muss auf die schnelle ca. 1000 EDIFACT Dateien auswerten.
Dazu versuche ich mich gerade in Powershell einzuarbeiten.

Ein geeignetes cmdlet scheint mir "select-string" mit dem Parameter "-pattern'

Hier mein 1. Versuch
$Patterns = @("BGM+380::89","BGM+381::89","MOA+9:")  
$Path = "test_001.wfa"  
$OutPath="test.log"  

Foreach($Pattern in $Patterns){
  $PatternLines = Select-String -path $Path -pattern $Pattern
  $PatternLines | Out-File -filepath $OutPath -append -encoding Default
}

Dabei gibt er mir keine Zeile aus. Ändere ich die Pattern z.B. in "BGM" und "MOA" erhalte ich mehrere Zeilen.
Wie maskiere ich die Pattern, dass auch + (ich denke es liegt daran) als Teil des Suchstrings angesehen werden. Fragezeichen ? und Stern * geht hier scheinbar nicht.

Weitere Fragen werden mit Sicherheit folgen face-smile

Danke und Gruß

LianenSchwinger

Content-Key: 331385

Url: https://administrator.de/contentid/331385

Printed on: April 19, 2024 at 13:04 o'clock

Mitglied: 132272
Solution 132272 Mar 07, 2017 updated at 11:02:27 (UTC)
Goto Top
Hi,
hättest du die Anleitung zum CMDLet gelesen wüsstest du jetzt das -Pattern ohne Verwendung des Parameters -SimpleMatch Strings in Regular Expression Syntax erwartet und da haben Sonderzeichen wie (.*+$°{}) etc . pp besondere Bedeutung!
Und das Pattern-Array kannst du auch ohne Schleife übergeben denn -Pattern akzeptiert auch String-Arrays ([string[]]) als Eingabe.
Also reicht ein:
$Path = "test_001.wfa"   
$OutPath="test.log"   
$Patterns = @("BGM+380::89","BGM+381::89","MOA+9:")   
Select-String -path $Path -pattern $Patterns -SimpleMatch | Out-File -filepath $OutPath -encoding Default 
Gruß
Member: LianenSchwinger
LianenSchwinger Mar 07, 2017 at 10:59:04 (UTC)
Goto Top
Hallo Cruzer,

danke für die Antwort.
Bin gerade selber über -SimpleMatch gestolpert face-smile

Aber der Hinweis zur Schleife ist auch sehr hilfreich.

G LianenSchwinger