Filtern Sie in der Ausgabe im klassischen Windows CMD nur Zahlen (0-9)

Filtern Sie in der Ausgabe im klassischen Windows CMD nur Zahlen (0-9)

Ich habe zum Beispiel einen Text:

cd123aaq54

und ich möchte in einer anderen Datei nur Zahlen trennen, also könnte ich

12354

in der Ausgabe.

Ich habe viele Befehle ausprobiert, wie:

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

Unter Linux ist es viel einfacher. Geben Sie einfach Folgendes ein:

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

Wie kann ich dies in einer Windows- cmdShell tun?

Antwort1

Wie kann ich alphanumerische Zeichen aus einer Eingabedatei entfernen, sodass nur Zahlen übrig bleiben?

Nachfolgend finden Sie zwei Lösungen:

  • Power Shell
  • Windows-Batchdatei

PowerShell-Lösung

Verwenden Sie den folgenden Befehl:

Get-Content input.txt | ForEach-Object {$_ -Replace "[^0-9]", ""} > output.txt

Anmerkungen:

  • input.txtenthält den zu filternden Text.

  • output.txtenthält den gefilterten Text

  • Alle nicht numerischen Zeichen (nicht nur Buchstaben) werden entfernt.

Beispiel:

PS F:\test> type .\input.txt
cd123aaq54
zyx456abc321
PS F:\test> Get-Content input.txt | ForEach-Object {$_ -Replace "[^0-9]", ""} > output.txt
PS F:\test> type .\output.txt
12354
456321
PS F:\test>

Windows-Batchdateilösung

Verwenden Sie die folgende Batchdatei (RemoveAlpha.cmd):

@echo off
setlocal enabledelayedexpansion
set _alpha=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
rem read input file line by line
for /f "usebackq tokens=*" %%i in (`type %1`) do (
  rem strip alpha characters by using them as delimeters
  for /f "tokens=1,2 delims=%_alpha%" %%j in ("%%i") do (
    rem write stripped text to output file
    echo %%j%%k>>%2
    )  
  )
endlocal

Anmerkungen:

  • !@#$%^&*()Das Obige setzt voraus , dass die Eingabedatei keine Sonderzeichen ( ...) enthält (diese werden nicht entfernt).

  • forDer „Trick“ besteht darin, die Zeichenfolge aus alphanumerischen Zeichen als Trennzeichen für den zweiten Befehl zu verwenden .

Verwendung:

RemoveAlpha input output
  • input: Pfadname für die Eingabedatei, die den zu filternden Text enthält.

  • output: Pfadname der Ausgabedatei, die den kopierten Filtertext enthalten soll.

Beispiel:

F:\test>RemoveAlpha input.txt output.txt

F:\test>type input.txt
cd123aaq54
zyx456abc321

F:\test>type output.txt
12354
456321

Weitere Informationen

  • Ein AZ-Index der Windows CMD-Befehlszeile- Ein hervorragendes Nachschlagewerk zu allem, was mit der Windows-Eingabeaufforderung zu tun hat.
  • für /f- Befehl mit den Ergebnissen eines anderen Befehls wiederholen.
  • Typ- Zeigt den Inhalt einer oder mehrerer Textdateien an.

verwandte Informationen