Ich habe eine lange Textdatei und möchte den gefühlt 10000 mal wiederkehrenden String " #" (4 mal Space dann #) löschen und zwar so, dass auch diese Zeile mit gelöscht wird. wie kriegt man das mit einem Texteditor hin? also z.B. in der Maske >>Ersetzen / alles ersetzen >>suchen nach - ersetzen durch schaffe ich es, dass zwar die Zeile dann leer bleibt, aber diese Zeile soll noch gelöscht werden. ich kam dann auf den Alt-Code für Backspace aber das geht leider nicht. Somit wäre das Dokument dann ca 30 meter kürzer.
Dann nimm halt Word (oder etwas ähnliches) und im Suchen-Feld den Paragraph Mark dazu.
Wenn Du ein Betriebssystem benutzt, dann mit cat und grep.
geany, regex search nach "^ #$", ersetzen durch nichts. vim, :g/^ #$/d
im notepad++ gehts mit Suchen/Ersetzen Suche nach: #\r\n Ersatzen durch:
perl -ne 'print "$_" unless /^ #/g' <in.txt >out.txt HACH!! ich könnt grad so weiter machen ^^
Peter D. schrieb: > find /V " #" old.txt > new.txt > > http://www.robvanderwoude.com/find.php hat das selbe problem wie > grep -v " #" old.txt > new.txt
c.m. schrieb: > hat das selbe problem wie > >> grep -v " #" old.txt > new.txt Also bei mir funktioniert es (Windows 7). Allerdings gibt find noch den Dateinamen aus. Daher: findstr /V " #" old.txt > new.txt
Eure Lösungen sind nicht Enterprise Enabled. Korrekt wäre hier eine Java-Webapplikation, die Funktionen zum Löschen von Zeilen mit parametrierbarem Präfix über eine REST-Schnittstelle zur Verfügung stellt.
Der Befehl "ed" ist entweder falsch geschrieben oder konnte nicht gefunden werden.
Vieleicht griegt noch jemand raus, wie man das mit edlin hinkriegt? Und/oder mit vi :-)
na das lustige ist doch, das sowas mit gnu-tools eine leichte übung ist, während man sich unter "dem besten windows aller zeiten" immernoch den kopp zerbrechen muss. respektive… vielleicht kann die powershell ja sowas(?).
c.m. schrieb: > während man sich unter "dem besten windows aller zeiten" immernoch den > kopp zerbrechen muss. Die Lösung mit Notepad++ wurde doch schon gezeigt. War übrigens die kürzeste und einfachste.
Der Andere schrieb: > Vieleicht griegt noch jemand raus, wie man das mit edlin hinkriegt? > Und/oder mit vi > > :-) Na gerne: ESC :1,$g/^ #/:d
Peter D. schrieb: > Der Befehl "ed" ist entweder falsch geschrieben oder > konnte nicht gefunden werden. Bei mir auch. Ist mein Betriebssystem kaputt?
c.m. schrieb: > na das lustige ist doch, das sowas mit gnu-tools eine leichte > übung ist, > während man sich unter "dem besten windows aller zeiten" immernoch den > kopp zerbrechen muss. WTF? Die Aufgabe des TE ist mit Suchen/Ersetzen in Word kein Thema. Erwiesenermaßen schafft das damit sogar jemand aus der Managementebene...
DAU schrieb: > Peter D. schrieb: >> Der Befehl "ed" ist entweder falsch geschrieben oder >> konnte nicht gefunden werden. > > Bei mir auch. Ist mein Betriebssystem kaputt? ja, bei mir geht's.
Klaus W. schrieb: > ja, bei mir geht's. Oh .... Mist ..... dann muss ich meine CD herauskramen und neu installieren ...... hab doch erst letze Woche ....
Mich wundert, das noch niemand mit einem sed gekommen ist;-)
1 | sed -n -i '{s/^ #//;te;p;:e}' DATEI |
Der ist nämlich genau für solche Sachen gebaut worden. So kann man auch mal kurz ein paar tausend Textdokumente ändern. ...und die Syntax ist auch leicht verständlich...
Norbert schrieb: > ...und die Syntax ist auch leicht verständlich... Da fehlt der Smiley. :-) Der Andere schrieb: > Und/oder mit vi Wenn man den "vi" als "ex" aufruft, benimmt er sich (fast) so wie der oben genannte "ed" … Wenn ich allerdings den mit MinGW mitgelieferten "ex" in einem cmd.exe starte, dann bekomme ich ein Fenster “Console host has stopped working”. Schon etwas seltsam, dass ein ausgeführtes Programm es schafft, den Aufrufer zum Absturz zu bringen. :-/
Sofern man es bei Windows-Bordmitteln belässt, ist der von Peter Dannegger vorgestellte Aufruf von findstr in der Kommandozeile der simpelste und daher beste Lösungsansatz.
Rufus Τ. F. schrieb: > Sofern man es bei Windows-Bordmitteln belässt Wobei der TE ja nirgends was von Windows geschrieben hat. ;-) Am Ende ist Peters "findstr /V" ja weiter nichts als die Windows-Version von "grep -v" mit anderem Namen. Sogar reguläre Ausdrücke können sie …
Jörg W. schrieb: > Norbert schrieb: >> ...und die Syntax ist auch leicht verständlich... > > Da fehlt der Smiley. :-) Alles schon da; Zusatzaufgabe: finden Sie den Smiley im Kommando ...
Klaus W. schrieb: >> Da fehlt der Smiley. :-) > > Alles schon da; Zusatzaufgabe: finden Sie den Smiley im Kommando ... ;p :e} :-)
gnargh ich wusste doch ich hatte was vergessen. Es geht hier mit Windows (bitte festhalten) XP da hab ich nur den normalen Notepad oder windows Write (das für .wri-Dateien) oder Ubuntu: darin Libre Office writer, gedit oder wine-notepad (wine version 1.4) wenn man in einer "ersetzen mit" Zeile quasi ein Zeichen für Backspace setzen könnte wäre das schon längst gelöst gewesen.
:
Bearbeitet durch User
▶ J-A von der H. schrieb: > da hab ich nur den normalen Notepad oder windows Write (das für > .wri-Dateien) Nö, das von Peter Danneger genannte "find" hast du dort auch, nur nicht das neuere "findstr", welches reguläre Ausdrücke unterstützt. Sofern du aber wirklich nur Zeilen mit exakt vier Leerzeichen, gefolgt von einem Doppelkreuz ausblenden willst und diese Kombination in den übrigen Zeilen nicht auftaucht (als Teilstring), kannst du das aber genau so benutzen.
also das von Herrn Dannegger beschriebene macht unter Win XP "no such file or directory" oder geht das anderswo als in der DOS-Box?
▶ J-A von der H. schrieb: > no such file or directory Du solltest das natürlich nicht stupide abtippen, sondern statt "old.txt" deinen Dateinamen einsetzen …
Norbert schrieb: > Mich wundert, das noch niemand mit einem sed gekommen ist;-) Zu alt. Wer traut sich schon an Programme ran, die in über 40 Jahren kaum verändert wurden. ;-)
das mit "findstr" gibt mir lauter diese Zeilen aus, die ich gerade löschen will. also hunderte male " #" untereinander # # # # # # # # (...)
Unter Ubuntu geht beispielsweise der "grep"-Weg von oben von Haus aus.
Notepad++: Datei öffnen. Ctrl-f und " #" eingeben. Auf Tab "Vorkommnisse markieren" wechseln. Haken bei "Lesezeichen setzen" reinmachen und "Alle suchen" klicken. Jetzt sind alle Zeilen, die " #" enthalten markiert. Dann Menü "Suchen" -> "Lesezeichen" -> "Zeilen mit Lesezeichen löschen". Viola :)
ich schreib da sja nicht so ab, wie es hier als Beispielname angegeben wird. Ich nutze schon die real existierenden Dateinamen ;) Ich habe kein Notepad++ das mit grep hat gefunzt. endlich mal ein Pluspunkt für Ubuntu...
:
Bearbeitet durch User
▶ J-A von der H. schrieb: > das mit "findstr" gibt mir lauter diese Zeilen aus, die ich gerade > löschen will. Du hast den Parameter /V vergessen. Die Reihenfolge der Parameter bei findstr ist nicht egal.
1 | findstr /V /c:" #" old.txt > new.txt |
Und natürlich statt "old.txt" und "new.txt" die von Dir gewünschten Dateinamen. Findstr verrät übrigens auch Dinge über seine Bedienung, einfach mal
1 | findstr /? |
aufrufen.
▶ J-A von der H. schrieb: > das mit "findstr" gibt mir lauter diese Zeilen aus, > die ich gerade löschen will. Dann fehlt das /V Mach mal die Eingabeaufforderung auf und gib "findstr -?" ein.
Thema erledigt, vielen Dank an alle, die sich die Zeit genommen haben :) der grep Befehl unter Ubuntu hat gewonnen.
:
Bearbeitet durch User
▶ J-A von der H. schrieb: > der grep Befehl unter Ubuntu hat gewonnen. Nicht nett, daß Du erst jetzt mit dem OS rausrückst. Da hätte man sich viele Antworten sparen können.
ich hatte den Eindruck, das er normalerweise Windows verwendet. Aber er hatte ja beides " Es geht hier mit Windows (bitte festhalten) XP da hab ich nur den normalen Notepad oder windows Write (das für .wri-Dateien) oder Ubuntu: darin Libre Office writer, gedit oder wine-notepad (wine version 1.4) "
alternativ hätte ich Excel/OOCalc vorgeschlagen nach Spalte mit dem Suchstring sortieren, Zeilen markieren Zeilen löschen abspeichern geht nur wenn auch sortiert werden darf
Mike B. schrieb: > geht nur wenn auch sortiert werden darf Wenn du danach auch wieder zurücksortierst ... Aber auch das wäre ja machbar: Vor dem Sortieren eine neue Spalte mit fortlaufenden Nummern einfügen. Nach dem Löschen der Zeilen dann nach der neuen Spalte sortieren und die dann wieder entfernen. Ist jetzt nicht einfacher als mit grep, aber schön wenn es geht :-)
Peter D. schrieb: > ▶ J-A von der H. schrieb: >> der grep Befehl unter Ubuntu hat gewonnen. > > Nicht nett, daß Du erst jetzt mit dem OS rausrückst. > Da hätte man sich viele Antworten sparen können. Ich wollte halt das übliche gebattle umgehen, welches BS nun das beste sei. jetzt könnt Ihr, feuer frei O_°
Jörg W. schrieb: > Norbert schrieb: >> ...und die Syntax ist auch leicht verständlich... > > Da fehlt der Smiley. :-) Hey! Ich meine das Ernst! Wie geht das alte amerikanische Sprichwort noch...- A RegEx a day keeps the doctor away. Oder so ähnlich. sed,grep,awk und regex ist mein persönlicher, täglicher Alzheimer Test. Wenn das nicht mehr funktioniert, dann verabschiede ich mich von den Angehörigen und gehe auf den Berg.
Der Andere schrieb: > Vieleicht griegt noch jemand raus, wie man das mit edlin hinkriegt? > Und/oder mit vi Früher (tm) hätte man das mit einem kleinen TECO Makro gemacht.
John D. schrieb: > Die Aufgabe des TE ist mit Suchen/Ersetzen in Word kein Thema. Da hätte ich Angst, dass irgendeine Autokorrektur zuschlägt, deren Auswirkungen irgendwo in den 100000 Zeilen ich erst nach Wochen der Fehlersuche bemerke.
c.m. schrieb: > perl -ne 'print "$_" unless /^ #/g' <in.txt >out.txt > > HACH!! ich könnt grad so weiter machen ^^ perl -pi -e 's/^\s+#$//g' file.txt
Tom schrieb: > John D. schrieb: >> Die Aufgabe des TE ist mit Suchen/Ersetzen in Word kein Thema. > > Da hätte ich Angst, dass irgendeine Autokorrektur zuschlägt, deren > Auswirkungen irgendwo in den 100000 Zeilen ich erst nach Wochen der > Fehlersuche bemerke. das sind dann auch so Sachen die mich an diesen Office-Programmen stören. sicherlich zwar viele Brauchbare Funktionen, etliches schiesst aber zu weit. Andererseits wird sich das ja wohl auch abstellen lassen. nur ...dran denken muss man.
Für solche Suchen-und-Ersetzen-Orgien von Leuten, die mit Kommandozeilen-Rattenschwänzen und regulären Ausdrücken nicht so geübt sind, ist das oben empfohlene Notepad++ ein wirklich gut nutzbares Tool. Auch unter XP. "Ich habe kein Notepad++" ist kein Hinderungsgrund, denn Internetzugang ist ja offenbar vorhanden.
Alternativ zu Notepad++ sollte es auch Geany für Windows geben. Dort lohnt sich auch ein Blick in die verfügbaren Plugins, ist einiges cooles (z.B. GDB Integration und Codehighlighting) dabei.
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.