hobi84
Goto Top

Wie riesige txt-Datei aller 6 Zeichen Semikolon setzten und aller weiteren 6 Zeichen umbrechen lassen zum Speichern als csv-Datei?

Hallo,

wie kann ich in eine riesige txt-Datei aller 6 Zeichen ein Semikolon einsetzten und aller weiteren 6 Zeichen einen Zeilenumbruch einfügen lassen, um die dann in eine csv-Datei zu speichern?

Die Daten-Einfügefunktion von EXCEl hat diese nicht hinbekommen.

Vielen Dank
Hobi 84.

Content-ID: 577659

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

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

144260
144260 07.06.2020 aktualisiert um 18:52:42 Uhr
Goto Top
aller 6 Zeichen ein Semikolon einsetzten und aller weiteren 6 Zeichen einen Zeilenumbruch einfügen lassen
Ein Beispiel hätte mehr gesagt als tausend Worte.
Mit n büßschen Regex kein Thema ...

Glaskugelinterpretation (Powershell)
(Get-Content 'D:\datei.txt') -replace '(.{6})(.{6})',('$1;$2' + "`r`n") | Set-Content "D:\DateiNeu.txt"  
Macht z.B. aus
123456TestAA999999TestBB ..........usw
Das hier
123456;TestAA
999999;TestBB
Tschö.
Pjordorf
Pjordorf 07.06.2020 um 18:50:37 Uhr
Goto Top
Hallo,

Zitat von @Hobi84:
wie kann ich in eine riesige txt-Datei aller 6 Zeichen ein Semikolon einsetzten und aller weiteren 6 Zeichen einen Zeilenumbruch einfügen lassen, um die dann in eine csv-Datei zu speichern?
Wie gross oder klein ist diese txt-Datei? Byte, GByte oder was?
Ist es nur eine echte Zeile oder kommen noch mehrere Zeilen vor? (LF und CR)?
Womit soll das gemacht werden? (Linux, Windows, Macintosch?)
Was ist mit ochhkommata und andere Steuerzeichen, sonderzeichen?
Umlaute, nur Deutsche oder auch andere Sprachen?
Das sind nur ein paar Fragen, die sich hier auftun. Ein Beispiel Text wäre hilfreich.
https://de.wikipedia.org/wiki/CSV_(Dateiformat)

Die Daten-Einfügefunktion von EXCEl hat diese nicht hinbekommen.
Wodran ist es denn gescheitert?

https://notepad-plus-plus.org/

Gruß,
Peter
Hobi84
Hobi84 07.06.2020 aktualisiert um 20:49:47 Uhr
Goto Top
Zitat von @144260:

aller 6 Zeichen ein Semikolon einsetzten und aller weiteren 6 Zeichen einen Zeilenumbruch einfügen lassen
Ein Beispiel hätte mehr gesagt als tausend Worte.

100120600001100120600001100120600001100120100000100120600001100120600001100117100043100116100041100115100041100115100041


Mit n büßschen Regex kein Thema ...

Glaskugelinterpretation (Powershell)
> (Get-Content 'D:\datei.txt') -replace '(.{6})(.{6})',('$1;$2' + "`r`n") | Set-Content "D:\DateiNeu.txt"  

Das sieht doch sehr gut aus.

Vielen Dank.

Ich habe deine Vorlage mal erweitert, funktioniert super. Es sieht jetzt schon so aus:
10012.0;60000.1;
Wie bekomme ich jetzt aus der 100 immer ein + Zeichen und aus der 600 immmer ein - Minus Zeichen?
Und wenn Möglich noch die Zeilen wie gezählt?

Das es dann so aussieht:
1;12.000;-0.100;
2;12.000;-0.100;

(Get-Content 'D:\datei.txt') -replace '(.{5})(.{1})(.{5})(.{1})',('$1.$2;$3.$4;' + "`r`n") | Set-Content "D:\DateiNeu.txt"  
Hobi84
Hobi84 07.06.2020 um 20:29:50 Uhr
Goto Top
Zitat von @Pjordorf:
Wie gross oder klein ist diese txt-Datei? Byte, GByte oder was?

ca. 200kB.

Ist es nur eine echte Zeile oder kommen noch mehrere Zeilen vor? (LF und CR)?

Nur Zahlen hintereinander.

Womit soll das gemacht werden? (Linux, Windows, Macintosch?)

Windows, es soll dann mit EXCEL weiterbearbeitet werden.

Was ist mit ochhkommata und andere Steuerzeichen, sonderzeichen?
Umlaute, nur Deutsche oder auch andere Sprachen?

Nicht drin.


Ein Beispiel Text wäre hilfreich.

100120600001100120600001
soll werden zu:
1;12.000;-0.100;
2;12.000;-0.100;

Die Daten-Einfügefunktion von EXCEl hat diese nicht hinbekommen.
Wodran ist es denn gescheitert?

EXCEL 2016 bekommt es schon hin, wenn man:
Daten > "Neue Abfrage" > "aus Text-Datei" > "Daten transformieren" > "Spalte teilen" > "Nach Anzahl von Zeichen" > "12" > "teilen wiederholt" > "Erweiterte Optionen" > "Aufteilen in Zeilen" > "..."
mehrfach nacheinander ausführt und noch ein paar weitere Dinge berücksichtig.

Das ist aber sehr mühsam, wenn man das öfters machen muss.

Daher vielen Dank für die Tips.

Viele Grüße
Hobi84.
144260
Lösung 144260 08.06.2020 um 10:11:04 Uhr
Goto Top
$global:cnt = 1
[regex]::Replace((Get-Content 'D:\datei.txt' -raw),'(.{3})(.{2})(.{1})(.{3})(.{2})(.{1})',{  
    param($m)
    "$($global:cnt);$(('{0:f3}' -f [decimal]("$(@{'100'='';'600'='-'}[$m.Groups[1].Value])$($m.Groups[2].Value).$($m.Groups[3].Value)")).replace(',','.'));$(('{0:f3}' -f [decimal]("$(@{'100'='';'600'='-'}[$m.Groups[4].Value])$($m.Groups[5].Value).$($m.Groups[6].Value)")).replace(',','.'));`r`n"  
    $global:cnt++
}) | set-content 'D:\DateiNeu.txt'  
Hobi84
Hobi84 13.06.2020 um 22:26:24 Uhr
Goto Top
Vielen Dank!