2017-09-01 1 views
0

Ich habe eine un-formatierte Textdatei, die jetzt wie dieses Recht aussieht: LASTNAMEFIRSTNAMEPHONE NUMBERLASTNAMEFIRSTNAMEPHONE NUMBERLASTNAMEFIRSTNAMEPHONE NUMBERLASTNAMEFIRSTNAMEPHONE NUMBERSeparieren von Daten in Textdatei in separaten Zeilen

, die ich möchte als zu formatieren :

LASTNAMEFIRSTNAMEPHONE NUMBER

LASTNAMEFIRSTNAMEPHONE NUMBER

LASTNAMEFIRSTNAMEPHONE NUMBER

mit jeder Person auf einer neuen Zeile. Dies ist, was ich versucht habe (PowerShell):

$content = [IO.File]::ReadAllText(".\output.txt") 
$content -replace "(555) ***-**** ", "`n" 
$content | Out-File .\test.txt 

Aber es funktioniert nicht. Meine Idee ist, dass, da die Telefonnummer am Ende der Zeile ist, ersetzen Sie das letzte Leerzeichen mit einem Wagenrücklauf. Die meisten Nummern haben die gleiche Vorwahl.

Würde gerne ein Batch-Skript oder PowerShell-Skript, aber ich denke, ich bin offen für Dritt-Programme, wenn es besser funktionieren würde. Das ultimative Ziel ist es, jede Zeichenfolge in eine organisierte Tabelle zu legen.

+2

1. Sie sollten einige Beispiele für verschiedene Fälle angeben. 2. Sie können nicht erwarten, dass die Regex funktioniert, wenn nicht alle ** Nummern die gleiche Vorwahl * haben (es sei denn, Sie möchten eine Lösung, die die meiste Zeit funktioniert) *. 3. '*' ist ein Platzhalterzeichen in Regex. Ihre Regex passt nicht zu dem, was Sie denken, und 4. Sie ersetzen Ihr gesamtes Match durch einen Wagenrücklauf und verlieren dadurch die Telefonnummer in Ihrem Ergebnis. –

+2

Wenn die Telefonnummern immer in Ziffern enden und es keine Ziffern in den Namen gibt, dann könnte diese alternative Regex: '-replace '(? <= \ D) \ s'," \ 'n" 'funktionieren, indem Sie die ersetzen (Leerzeichen) nach einer Ziffer. Ein Leerzeichen oder Tab oder was auch immer es ist. Ihr '(555)' ist falsch, weil Klammern ein Regex-Gruppenoperator sind, müssen Sie sie entkommen, um Klammern im Text zu entsprechen. Aber eine genaue Übereinstimmung würde ein klareres Beispiel dafür benötigen, welche Daten Sie haben. – TessellatingHeckler

+0

@LievenKeersmaekers - 1. Alle Fälle sind 'Nachname'' Vorname '' Telefonnummer' 2. Es ist wie 95% der Zahlen, ich kann den Rest manuell tun, wenn es sein muss. 3. Ich möchte, dass eine beliebige Nummer gewählt wird, da die Nummern nach der Ortsvorwahl variieren. 4. Oh ... Ich verstehe. Ich arbeite gerade daran. Außerdem habe ich den Code im zweiten Kommentar ausprobiert und er scheint im PowerShell-Fenster zu funktionieren, aber nicht in der Out-Datei. Die Telefonnummern haben nur Ziffern, die Namen haben keine Ziffern. – jangles

Antwort

1
(Get-Content '.\input.txt' -Raw) -replace '\(555\) \d{3}-\d{4}\s*', "`$0`r`n" | Out-File 'output.txt' 
Verwandte Themen