2016-04-02 4 views
0

ich einen Text haben, zum Beispiel:Filter nur Ziffern (0-9) in der Ausgabe

cd123aaq54

und ich möchte nur Zahlen in einer anderen Datei trennen, so konnte ich

12354
haben

in der Ausgabe.

Ich habe eine Menge von Befehlen wie

Get-Content text.txt | Select-String -Pattern '[0-9]' 

In Linux versucht, ist es viel einfacher, nur

grep -o '[0-9][0-9]*' text >numbers 

Antwort

2

Der einfachste Weg, in Powershell wahrscheinlich alle nicht-Ziffern zu ersetzen ist:

@(Get-Content text.txt) -replace '\D','' 

Sie können das Cmdlet Out-File oder Set-Content zur Ausgabe verwenden das Ergebnis in eine Datei:

@(Get-Content text.txt) -replace '\D','' |Out-File C:\output.txt 

Wenn Sie viele Zeilen in der Textdatei haben, können Sie die Vorteile von Powershell pipiline Natur und die Ausgabe des Befehls Get-Content direkt an ForEach-Object und führen Sie die -replace Betrieb in dort nehmen:

Get-Content text.txt |ForEach-Object {$_ -replace '\D',''} |Set-Content C:\output.txt 
+0

Oh mein Gott, thaks! Aber ein anderes Problem ... das Dokument hat ein paar Kommas, (,) Wie kann ich sie behalten? Ich meine, sie sind Preise, zum Beispiel 150,36 –

+1

Verwenden Sie Zeichenklassensubtraktion: '-replace '[\ D - [,]]', ''' –

+0

Hallo nochmal! Ich habe Powershell zu langsam gefunden (das Skript ist so langsam zu vervollständigen und ich möchte es in einer Schleife haben.) Ich würde gerne wissen, ob Sie einen anderen Weg kennen, es in klassischen cmd zu tun, nicht in Powershell. Danke noch einmal! –

Verwandte Themen