Guten Tag, ich habe eine kleine Textdatei (gerade einmal 20kb), bei denen ich einen Teil mittels regulärem Ausdruck löschen will. Das Problem: Notepad++ schafft es nicht. Fange ich ein paar zig Zeilen vor dem Ende an, dauert es ein paar Sekunden. Die ganze Datei zu durchsuchen dauert jetzt schon 20 Minuten, und ich bezweifle, dass es ein Ende gibt. Kennt jemand von euch einen guten Texteditor für Windows, der weder Emacs noch Vim ist und reguläre Ausdrücke (schnell) beherrscht?
Walter T. schrieb: > Kennt jemand von euch einen guten Texteditor für Windows, der weder > Emacs noch Vim ist und reguläre Ausdrücke (schnell) beherrscht? Ich nehme immer den eingebauten von Total-Commander. Bisher absolut Stressfrei bis zu einer gewissen sehr großen Dateigröße. Ansonsten musst du auf schwere Waffen umsteigen. = MS-Word o. sein Libre-Office. Dann einfach "speichern unter" und dort als "Als Text-Datei (*.txt)" auswählen.
Geruechteweise gibt es einen funktionierenden SED auch fuer Win. Wahlweise schreibt er nur '\n' ans Zeilenende (meine Praeferenz), oder '\n''\r'. Das haengt von der Version ab.
Eigentlich kommt Notepad++ recht gut mit grösseren Dateien klar. Vielleicht ist dein regulärer Ausdruck extrem schwierig? LG, Sebastian
> '\n''\r'
Bevor irgendwelche richtigen Schlaumaier maekeln:
Es muss natuerlich '\r''\n' heissen.
Walter T. schrieb: > Kennt jemand von euch einen guten Texteditor für Windows, der weder > Emacs noch Vim ist und reguläre Ausdrücke (schnell) beherrscht? Hast du cygwin da? Dann die Textdatei einmal durch... bash$ cat input.txt | sed -e "s/hallo/tschuess/g" > output.txt ... schieben. mfg mf
Sebastian schrieb: > Vielleicht ist dein regulärer Ausdruck extrem schwierig? Nicht wirklich. Auch nichts, wo er direkt die ganze Datei "gierig" erfassen will. Ich will am Zeilenanfang Numerierungen (ohne führende Nullen) löschen, ersetze also \nN\d+\s durch \n.
:
Bearbeitet durch User
Mit NP++ habe ich schon MB grosse HTML Dateien mit regulären ausdrücken bearbeitet.Vielleicht hast du dir eine endlosschleife gebaut ?
Walter T. schrieb: > Sebastian schrieb: > >> Vielleicht ist dein regulärer Ausdruck extrem schwierig? > > Nicht wirklich. Auch nichts, wo er direkt die ganze Datei "gierig" > erfassen will. > Ich will am Zeilenanfang Numerierungen (ohne führende Nullen) löschen, > ersetze also \nN\d+\s durch \n. Zeilenanfang ist doch ^ also ^[1-9][0-9]*\s+ durch nichts ersetzen? LG, Sebastian
Mach mal eine 20 Zeilen große Probe-Datei hier rein. Dann ist es einfacher das Problem zu lösen.
Rüdiger B. schrieb: > Vielleicht hast du dir eine endlosschleife gebaut ? Die Datei ist alles andere als geheim. Ich will am Zeilenanfang Numerierungen (ohne führende Nullen) löschen, ersetze also \nN\d+\s durch \n. Ich sehe nicht, wie das eine Schleife oder so erzeugen könnte. Ich finde auch keine Zeile, wo der Ausdruck in mehr als 10 Zeichen terminiert.
> \nN\d+\s durch \n
Das sind ja auch keine richtigen regulaeren Ausdruecke :)!
Richtige sehen so aus:
s/^[0-9]* //
;) Fein. Ein Bild (hier Text) sagt mehr als 1000 Worte. In den Fall musst du ein Prg-Code benutzen. Anders geht das nicht. Selbst ein Abschneiden der ersten Zeichen einer Zeile geht nicht, wegen den ; Also muss da ein einfacher Pharser ran. Der prüft ob das erste Zeichen ein N ist. Dann den Text bis zum Leerzeichen auf Text. Wenn kein Text sondern eine Zahl dann die Pos. des ersten Leerzeichen nehmen. Mit einer Mid-Funktion den Rest des Textes aus der Zeile auslesen und in eine neue Datei schreiben. Und das ganze Zeile für Zeile ;) Ist für mich in VB ca. 15 Minuten Arbeit inkl. Testen. Also nicht wirklich schwer wenn man coden kann. Mit etwas mehr Aufwand und guten Excel-Fähigkeiten geht es auch damit (ohne Coden).
Geany kann das :-) (sowohl unter Linux als auch unter Windows) STRG-H -> Terme eingeben -> Regulaere Ausdruecke aktivieren -> Mehrzeilenerkennung aktivieren - Alle ersetzen -> FERTIG
Schlaumaier schrieb: > In den Fall musst du ein Prg-Code benutzen. Anders geht das nicht. Manchmal frage ich mich ja, ob da wirklich ein Mensch an einer Tastatur sitzt, der sich den ganzen falschen Unsinn ausdenkt, oder ob hier irgendwer merkwürdiges machine learning betreibt. Irgendwie ist beinahe jede Antwort falsch, aber sie hat auch irgendwie mit der Frage zu tun.
Walter T. schrieb: > Irgendwie ist beinahe > jede Antwort falsch, aber sie hat auch irgendwie mit der Frage zu tun. Wie würdest du es denn machen ??
Sebastian schrieb: > ^ also ^[1-9][0-9]*\s+ Statt nach dem Zeilenende nach dem Anfang zu suchen bringt keine Besserung. Es ist sehr merkwürdig. Notepad++ fordert auch nicht besonders viel Prozessorleistung an. Man könnte meinen, es wolle einfach die Zeit bis Feierabend verbummeln.
Walter T. schrieb: > Manchmal frage ich mich ja, ob da wirklich ein Mensch an einer Tastatur > sitzt, Jedenfalls einer der die Datei auch gelesen hat. Aber da du kein Download kannst hier ein Auszug der Datei. ;left_extruder_temperature_raft0: 0 ;right_extruder_temperature_reset: ;left_extruder_temperature_reset: ;start gcode N1 M118 X65.00 Y25.00 Z20.07 T0 M140 S50 T0 M104 S220 T0 M104 S0 T1 N5 M107 N6 G90 N7 G28 N8 M132 X Y Z A B N9 G1 Z50.000 F420 Ich sehe da keine "Funktion" oder Text-Befehle wie /N etc. Das ist normales BlaBla. Entweder ich pharse die selbst, oder es gibt ein Programm was mir die Arbeit abnimmt. Das gebe ich zu, kenne ich nicht. Ich weiß wie gut ich coden kann, ergo würde ich mir nicht die Arbeit machen, nach ein Prg. zu suchen, sondern mal eben (wie gesagt 15 Min) ein kleinen VB-Code schreiben.
Wie gesagt, wenn es darum geht, die z.B. N1, N5, N10, N71 plus dem anschliessenden Leerzeichen an den Zeilenanfaengen zu entfernen, dann kann Geany das :-) Und er braucht dazu keine 2 sec.
ArthurDent schrieb: > dann > kann Geany das Kann ich bestätigen. Die Regexp ^N[0-9]+\s durch nichts ersetzen ist pfeilschnell. Also ist das ein Fehler in NPP.
Der zunaechst angegebene Ausdruck \nN\d+\s geht aber auch
Walter T. schrieb: > Kann ich bestätigen. Die Regexp ^N[0-9]+\s durch nichts ersetzen ist > pfeilschnell. Ich nicht :) Weil ich von den Programm bis heute noch nie gehört habe. Und ad es Editoren wie Sand am Meer gibt .... . ;)
Also bei mir funktioniert das mit Notepad++ ohne probleme. Dauer: etwa 1 sekunde (und mein Laptop ist aaaaaalt)
Walter T. schrieb: > Kennt jemand von euch einen guten Texteditor für Windows, der weder > Emacs noch Vim ist und reguläre Ausdrücke (schnell) beherrscht? Ist halt etwas blöd, wenn man die besten Kandidaten gleich von vornherein ausschließt ;-) Vim führt das Kommando
1 | :%s/^N\d\+\s\+// |
auf deiner Datei Tuerkeil.gcode mit ihren 17893 Zeilen so schnell aus, dass ich keine Verzögerung feststellen kann. Bei der zehnfachen Dateigröße (178930 Zeilen) dauert das Löschen der Nummerierung etwa 100 ms. Aber das geht sicher mit den allermeisten anderen Editoren ähnlich schnell. Wenn dein Editor 20 Minuten oder gar noch länger braucht, ist er vermutlich kaputt.
:
Bearbeitet durch Moderator
Zombie schrieb: > Also bei mir funktioniert das mit Notepad++ ohne probleme. Dauer: etwa 1 > sekunde (und mein Laptop ist aaaaaalt) Dann interessiert mich Deine wahrscheinlich ebenfalls aaaaaalte Version von N++. Das Problem ist in der aktuellen v8.3.3 (32-bit) und in einer älteren Version, bei der ich den Stand nicht mehr kenne, weil ich heute aus dem bekannten Grund ein Update gemacht habe. Yalu X. schrieb: > Ist halt etwas blöd, wenn man die besten Kandidaten gleich von > vornherein ausschließt ;-) Manchmal muss man auf das beste Werkzeug verzichten, weil man nicht weiss, ob andere damit klarkommen.
:
Bearbeitet durch User
Bei mir geht es mit NP++ (der 64 Bit 8.4). Allerdings ersetze ich '^N[0-9]+ ' durch ''. Funktioniert aber auch mit '\nN\d+\s' ohne Probleme.
Walter T. schrieb: > Yalu X. schrieb: >> Ist halt etwas blöd, wenn man die besten Kandidaten gleich von >> vornherein ausschließt ;-) > > Manchmal muss man auf das beste Werkzeug verzichten, weil man nicht > weiss, ob andere damit klarkommen. Ok, also Notepad++, das du ja bereits verwendest: Die neueste Version (8.4) unter Wine braucht bei mir ca. 1,5 Sekunden. Das ist zwar nicht superschnell, liegt aber noch deutlich unter 20 Minuten. Irgendetwas (vielleicht auch dein Windows) scheint bei dir kaputt zu sein. Edit: 8.3.3 (die von dir benutzte Version) braucht ebenfalls ca. 1,5 Sekunden.
:
Bearbeitet durch Moderator
Yalu X. schrieb: > Edit: 8.3.3 (die von dir benutzte Version) braucht ebenfalls ca. > 1,5 Sekunden. Danke für den Hinweis. Danach musste ich erst einmal die 64-Bit-Variante ausprobieren. 8.3.3 64 Bit braucht bei mir auch weniger als 1 Sekunde. 8.3.3 32 Bit liefert den Wartecursor. Das nenne ich mal ein sehr spezifisches Problem.
:
Bearbeitet durch User
Walter T. schrieb: > Dann interessiert mich Deine wahrscheinlich ebenfalls aaaaaalte Version > von N++. 8.2.1 (32-Bit) vom 19. Januar 2022. Also gar nicht sooooo alt ;) P.S. das Leerzeichen nach ^N[0-9]* sieht man im Screenshot natürlich nicht.
Zombie schrieb: > 8.2.1 (32-Bit) vom 19. Januar 2022. Also gar nicht sooooo alt ;) Super! Danke! Dann muss ich mir mal eine VM aufsetzen. So sollte sich das Problem ja ruck zuck einklammern lassen.
Walter T. schrieb: > Kennt jemand von euch einen guten Texteditor für Windows, der weder > Emacs noch Vim ist und reguläre Ausdrücke (schnell) beherrscht? Notepad2. Hat auch noch den Vorteil, sich als kompletter Ersatz für MS-Notepad in's System schummeln zu können. Die Unterstützung für REs ist allerdings deutlich verbesserungsbedürftig. Solange es nur darum geht, existierende Zeilen zu ändern, ist's vollkommen OK. Was das Teil aber z.B. nicht kann, ist das Löschen von leeren Zeilen bzw. das Löschen von Zeilen, die nach einer RE-Ersetzung leer werden. Das fehlt wirklich.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.