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-ID: 331385

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

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

132272
Lösung 132272 07.03.2017 aktualisiert um 12:02:27 Uhr
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ß
LianenSchwinger
LianenSchwinger 07.03.2017 um 11:59:04 Uhr
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