Während eine feste Breite-Datei wie folgt zu lesen:Powershell - Regex - Breite Datei behoben - Escape-Sequenz
ABC 7112123207/24/16Smith Timpson Head Coach 412-222-0000 00011848660 ELl CAAN HIGH SCHOOL 325 N Peal AVE. Smith Timpson Head Coach COLORADO CITY AZ 86021 01 FALL MALE 07/29/16EQ15031 1977904 BUDDY'S ALL STARS INC. BUDDY ALL STARS N V12V70R16 1.00V12V70R16
Ich wünsche das einzige Leerzeichen zu entkommen,/und das Apostroph.
ich in Powershell meine regex versucht wie folgt aus:
$Line | Select-String -Pattern "^(.*)[a-zA-Z0-9?\s?]" -AllMatches
Ich muss die Übereinstimmungswerte wie lesen:
ABC
12345607/24/16Joe (diese Aufteilung in drei: 123456,07/24/16, Joe)
Smith
Kopf Trainer
Buddys Box
Ich versuche, die Slices zu einem CSV hinzuzufügen, wobei jeder einzelne einem Header zugewiesen wird. Zum Beispiel:
$csh.USER_GROUP = $line.Substring(0,10).Trim()
$csh.ORDER_NUMBER = $line.Substring(10,8).Trim()
$csh.ORDER_ENTRY_DATE=$line.Substring(18,8).Trim()
$csh.CONTACT_FIRST=$line.Substring(26,35).Trim()
$csh.CONTACT_LAST=$line.Substring(61,35).Trim()
$csh.CONTACT_TITLE=$line.Substring(96,35).Trim()
$csh.CONTACT_EMAIL= $line.Substring(131,35).Trim()
$csh.CONTACT_PHONE=$line.Substring(166,20).Trim()
$csh.SCHOOL_ID=$line.Substring(186,15).Trim()
} | convertto-csv | select-object -skip 1 | out-file temp.csv
Jetzt, da es Leerzeichen und sich wiederholende Elemente gibt, ist es falsch, dass doppelte Schlüssel nicht erlaubt sind. Gibt es eine elegante Alternative?
Warum Sie RegEx verwenden, wenn es feste Breite ist? Warum nicht einfach '$ Line.SubString()' verwenden, um die verschiedenen Spalten zu erhalten? Oder werden die Spaltenbreiten variieren? – TheMadTechnician
die Spaltenbreiten variieren verrückt und lesen mindestens 4000 Zeilen. – skrubber
Wie geht es mit: '$ Zeile -split" \ s {2} "|? {$ _} |% {$ _. Trim() -split '(\ d \ d \/\ d \ d \/\ d \ d) '-join', '} ' – TheMadTechnician