Forum: PC Hard- und Software Texteditor für Windows mit regulären Ausdrücken


von Walter T. (nicolas)


Lesenswert?

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?

von Schlaumaier (Gast)


Lesenswert?

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.

von Cartman (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

Eigentlich kommt Notepad++ recht gut mit grösseren Dateien klar. 
Vielleicht ist dein regulärer Ausdruck extrem schwierig?

LG, Sebastian

von Cartman (Gast)


Lesenswert?

> '\n''\r'

Bevor irgendwelche richtigen Schlaumaier maekeln:
Es muss natuerlich '\r''\n' heissen.

von Achim M. (minifloat)


Lesenswert?

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

von Walter T. (nicolas)


Lesenswert?

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
von Ongele (Gast)


Lesenswert?

VSCode

von Rüdiger B. (rbruns)


Lesenswert?

Mit NP++ habe ich schon MB grosse HTML Dateien mit regulären ausdrücken 
bearbeitet.Vielleicht hast du dir eine endlosschleife gebaut ?

von Sebastian (Gast)


Lesenswert?

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

von Schlaumaier (Gast)


Lesenswert?

Mach mal eine 20 Zeilen große Probe-Datei hier rein.

Dann ist es einfacher das Problem zu lösen.

von Walter T. (nicolas)


Angehängte Dateien:

Lesenswert?

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.

von Cartman (Gast)


Lesenswert?

> \nN\d+\s durch \n
Das sind ja auch keine richtigen regulaeren Ausdruecke :)!

Richtige sehen so aus:
s/^[0-9]* //

von MaWin (Gast)


Lesenswert?


von Schlaumaier (Gast)


Lesenswert?

;)

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).

von ArthurDent (Gast)


Lesenswert?

Geany kann das :-) (sowohl unter Linux als auch unter Windows)

STRG-H -> Terme eingeben -> Regulaere Ausdruecke aktivieren -> 
Mehrzeilenerkennung aktivieren - Alle ersetzen -> FERTIG

von Walter T. (nicolas)


Lesenswert?

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.

von Schlaumaier (Gast)


Lesenswert?

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 ??

von Walter T. (nicolas)


Lesenswert?

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.

von Schlaumaier (Gast)


Lesenswert?

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.

von ArthurDent (Gast)


Lesenswert?

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.

von Walter T. (nicolas)


Lesenswert?

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.

von ArthurDent (Gast)


Lesenswert?

Der zunaechst angegebene Ausdruck \nN\d+\s geht aber auch

von Schlaumaier (Gast)


Lesenswert?

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 .... . ;)

von Zombie (Gast)


Angehängte Dateien:

Lesenswert?

Also bei mir funktioniert das mit Notepad++ ohne probleme. Dauer: etwa 1 
sekunde (und mein Laptop ist aaaaaalt)

von Yalu X. (yalu) (Moderator)


Lesenswert?

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
von Walter T. (nicolas)


Lesenswert?

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
von udok (Gast)


Lesenswert?

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.

von Yalu X. (yalu) (Moderator)


Lesenswert?

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
von Walter T. (nicolas)


Lesenswert?

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
von Zombie (Gast)


Lesenswert?

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.

von Walter T. (nicolas)


Lesenswert?

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.

von c-hater (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.