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?
Gast
#7049639
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.
Gast
#7049642
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.
Gast
#7049644
Eigentlich kommt Notepad++ recht gut mit grösseren Dateien klar. Vielleicht ist dein regulärer Ausdruck extrem schwierig? LG, Sebastian
Gast
#7049648
> '\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.
Gast
#7049655
VSCode
Mit NP++ habe ich schon MB grosse HTML Dateien mit regulären ausdrücken bearbeitet.Vielleicht hast du dir eine endlosschleife gebaut ?
Gast
#7049661
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
Gast
#7049662
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.
Gast
#7049665
> \nN\d+\s durch \n
Das sind ja auch keine richtigen regulaeren Ausdruecke :)!
Richtige sehen so aus:
s/^[0-9]* //
Gast
#7049673
EmEditor ? https://de.emeditor.com/
Gast
#7049679
;) 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).
Gast
#7049683
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.
Gast
#7049688
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.
Gast
#7049697
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.
Gast
#7049709
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.
Gast
#7049721
Der zunaechst angegebene Ausdruck \nN\d+\s geht aber auch
Gast
#7049725
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 .... . ;)
Gast
#7049726
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 | |
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.
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.
Gast
#7049744
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.
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.
Gast
#7049773
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.
Gast
#7049973
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.
