newbie58
Goto Top

UltraEdit: Textdatei für Excel aufbereiten

Hallo,

ich habe eine Textdatei (Ausschnitte aus einem NC-Programm) die wie folg aussieht:


5112281
; NC_JOB: 30001 VORFRAESEN AUSLASSSEITE AZ+0.5MM
; NC_JOB: 30001 FRAESEN AUSLASSSEITE
; NC_JOB: 30011 VORFRAESEN FIXIERUNG MONTAGEPLATTE
; NC_JOB: 30011 FRAESEN FIXIERUNG MONTAGEPLATTE
; NC_JOB: 30021 FRAESEN FLAECHE DMC
; NC_JOB: 60001 FLAECHE STIRNSEITE FRAESEN_1(1)
; NC_JOB: 60001 FLAECHE STIRNSEITE FRAESEN_1
; NC_JOB: 67601 FRAESEN FUER BOHRUNG TEMPERATURFUEHLER

N1500 LAST_TOOL=5085102
; NC_JOB: 30201 FIXIERUNG ADAPTERPLATTE BOHREN TYP T
; NC_JOB: 30202 FIXIERUNG ADAPTERPLATTE BOHREN TYP T

N1780 LAST_TOOL=5085098
; NC_JOB: 33701 OELBOHRUNG KETTENSPANNER PILOTIEREN


Nun meine Frage:
Wie muss ein Script aussehen, damit ich folgendes Ergebnis erreiche?


5112281
;30001;VORFRAESEN AUSLASSSEITE AZ+0.5MM
;30001;FRAESEN AUSLASSSEITE
;30011;VORFRAESEN FIXIERUNG MONTAGEPLATTE
;30011;FRAESEN FIXIERUNG MONTAGEPLATTE
;30021;FRAESEN FLAECHE DMC
;60001;FLAECHE STIRNSEITE FRAESEN_1(1)
;60001;FLAECHE STIRNSEITE FRAESEN_1
;67601;FRAESEN FUER BOHRUNG TEMPERATURFUEHLER

5085102
;30201;FIXIERUNG ADAPTERPLATTE BOHREN TYP T
;30202;FIXIERUNG ADAPTERPLATTE BOHREN TYP T

5085098
;33701;OELBOHRUNG KETTENSPANNER PILOTIEREN


Mit einem Makro konnte ich es nur zum Teil lösen.

Gruß
Peter

Content-Key: 352687

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

Ausgedruckt am: 19.03.2024 um 02:03 Uhr

Mitglied: 134464
134464 24.10.2017 um 12:04:02 Uhr
Goto Top
Mit folgendem Regex ein Replace machen:
^[^=;\r\n]+=
und durch Null ersetzen, dann erneut mit
^; NC_JOB:
durch ";" ersetzen, fertig!
Mitglied: beidermachtvongreyscull
beidermachtvongreyscull 24.10.2017 um 12:14:43 Uhr
Goto Top
Mach es Dir doch nicht so kompliziert.

Importiere die Datei als Textdatei nach Excel.
Wichtig: Feste Breite
Setze die Spaltentrenner entsprechend.
Wichtig: Alle zu importierenden Spalten erstmal als TEXT und nicht als STANDARD importieren

Ich hab es mit dem Auszug von Dir probiert.
Geht fehlerfrei. Danach kannst Du die Spalten positionieren,w ie Du magst.
Export in TXT-Datei geht natürlich dann auch.
Mitglied: beidermachtvongreyscull
beidermachtvongreyscull 24.10.2017 um 12:15:59 Uhr
Goto Top
Ich bewundere immer Leute, die Regex draufhaben.
Ich hab's leider nie verstanden und auch keinen brauchbaren Einstieg gefunden. face-sad
Mitglied: 134464
134464 24.10.2017 aktualisiert um 12:29:44 Uhr
Goto Top
Zitat von @beidermachtvongreyscull:

Ich bewundere immer Leute, die Regex draufhaben.
Ich hab's leider nie verstanden und auch keinen brauchbaren Einstieg gefunden. face-sad
Pippifax face-smile

UltraEdit.perlReOn();
UltraEdit.activeDocument.selectAll();
UltraEdit.activeDocument.findReplace.regExp = true;
UltraEdit.activeDocument.findReplace.replaceAll = true;
UltraEdit.activeDocument.findReplace.mode = 1;
UltraEdit.activeDocument.findReplace.replace('^[^=;\r\n]+=',"");  
UltraEdit.activeDocument.findReplace.replace('^;\\s*NC_JOB:\\s*',';');  
Mitglied: beidermachtvongreyscull
beidermachtvongreyscull 24.10.2017 um 12:27:43 Uhr
Goto Top
OK.
Ich stell mich in eine Ecke und schäme mich. face-wink

Wie gesagt. Meinen Respekt.

BIN DRAUẞEN (Falls sich jemand wundert, warum ich das immer schreibe und dann auch groß. Ich mag das große ẞ face-smile)
Mitglied: 134464
134464 24.10.2017 aktualisiert um 12:31:28 Uhr
Goto Top
Zitat von @beidermachtvongreyscull:
Ich stell mich in eine Ecke und schäme mich. face-wink
Anstatt in die Ecke stellen hier lesen face-smile
Regular Expressions Tutorial
Muss nur einmal klick machen, dann findest du es gar nicht mehr so schwer...
Mitglied: newbie58
newbie58 24.10.2017 um 12:51:00 Uhr
Goto Top
Danke an Kokosnuss und allen anderen.

@kokosnuss:
Deine Zeien funktionieren soweit ganz gut, jedoch fehlt noch das Semikolon (;) nach der 5-stelligen Nummer (;33701 OELBOHRUNG KETTENSPANNER BOHREN).

Gruß
Peter
Mitglied: 134464
134464 24.10.2017 aktualisiert um 13:08:18 Uhr
Goto Top
Zitat von @newbie58:
@kokosnuss:
Deine Zeien funktionieren soweit ganz gut, jedoch fehlt noch das Semikolon (;) nach der 5-stelligen Nummer (;33701 OELBOHRUNG KETTENSPANNER BOHREN).
Das habe ich dir als MiniMini-Hausaufgabe gelassen. face-wink

Wenn du die Denkzeit nicht investieren willst ==> mit n' büschen PayPal kannst du mich überreden face-smile
Mitglied: newbie58
newbie58 24.10.2017 um 13:12:44 Uhr
Goto Top
aber genau da liegt mein großes Problem.
Es darf nur das erste Leerzeichen nach der 5-stelligen Nummer finden und mit einem Semikolon ersetzen.
Weiter Leerzeichen in der gleichen Zeile dürfen nicht verändert werden.
Mitglied: 134464
134464 24.10.2017 aktualisiert um 13:29:38 Uhr
Goto Top
Zitat von @newbie58:

aber genau da liegt mein großes Problem.
Es gibt kein Problem ...
Es darf nur das erste Leerzeichen nach der 5-stelligen Nummer finden und mit einem Semikolon ersetzen.
Weiter Leerzeichen in der gleichen Zeile dürfen nicht verändert werden.
Den obigen zweiten Regex brauchst du nur minimal verändern/anpassen, ein bisschen mitdenken sollte man hier schon erwarten können wenn man schon mit Skripten arbeitet!
Wie gesagt, gerne bekommst du die Lösung frei Haus -> PN.
Das ganze hilft hier ja offensichtlich nur dir selbst und keinem anderen.
Mitglied: colinardo
Lösung colinardo 24.10.2017 um 16:05:45 Uhr
Goto Top
Servus!
UltraEdit.perlReOn();
UltraEdit.activeDocument.selectAll();
UltraEdit.activeDocument.findReplace.regExp = true;
UltraEdit.activeDocument.findReplace.replaceAll = true;
UltraEdit.activeDocument.findReplace.mode = 1;
UltraEdit.activeDocument.findReplace.replace('^[^=;\r\n]+=',"");  
UltraEdit.activeDocument.findReplace.replace('^;\\s*NC_JOB:\\s*(\\d+)\\s*',';$1;');  
oder alternativ auch mit den Standard-JavaScript-Functions
UltraEdit.perlReOn();
UltraEdit.activeDocument.selectAll();
var txt = UltraEdit.activeDocument.selection;
var result = txt.replace(/^[^=;\r\n]+=/gmi,"");  
var result = result.replace(/^;\s*NC_JOB:\s*(\d+)/gmi,";$1;");  
UltraEdit.activeDocument.write(result);
Grüße Uwe
Mitglied: newbie58
newbie58 25.10.2017 um 06:59:46 Uhr
Goto Top
Hallo Uwe,

vielen, vielen Dank.
Das ist die perfekte Lösung (beide Scripte).

Wünsche Dir noch einen schönen Tag.

Gruß Peter