" > " an jeden Zeilenanfang setzen

Das Textverarbeitungsprogramm

Moderator: Moderatoren

Benutzeravatar
Constructus
*******
Beiträge: 1610
Registriert: Mo, 21.01.2008 18:08
Wohnort: 20 Jahre Brilon - 40 Jahre Essen- Steele

" > " an jeden Zeilenanfang setzen

Beitrag von Constructus »

Hallo zusammen,

manchmal muß ich in einem x- seitigen Dokument an jedem Zeilenanfang ein > nachträglich einsetzen (weil ich etwas falsch kopiert hatte). Das Dokument stammt z. B. aus KMail und hat in jeder Zeile die ¶ als Absatzendezeichen. Versucht habe ich, das Wiki zu Suchen & Ersetzen nachzuvollziehen; irgendwie verstehe ich das nur so, daß ich das ¶ ersetzen könne- das steht aber am Zeilenende, das > soll aber an jeden Zeilenanfang. Hab ich was falsch verstanden, oder gab es das Thema schonmal?

Ich freue mich auf einen Hinweis

Constructus

P.s.: ich will natürlich die ¶ nicht weghaben/ ersetzen, sondern lediglich die > ergänzen...
EDV ist wunderbar - o Wunder, wenn sie funktioniert! {°L*}

Freie Offices auf div. Linuxen + 3 VBoxen mit WIN2K
|| LibO + AOO, auf Linux und WIN2K; portable OO & Co. auf WIN
Genaue Typisierung unmöglich, alles ist "im Fluß"
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: " > " an jeden Zeilenanfang setzen

Beitrag von lorbass »

Nach [Strg]+[F] im Dialog Suchen & Ersetzen

- Suchen nach: "^(.*)$" (ohne Anführungszeichen eingeben)
- Ersetzen durch: " > $1" (ohne Anführungszeichen eingeben)
- Mehr Optionen
- [x] Regulärer Ausdruck
- Ersetze alle

Gruß
lorbass
Benutzeravatar
Constructus
*******
Beiträge: 1610
Registriert: Mo, 21.01.2008 18:08
Wohnort: 20 Jahre Brilon - 40 Jahre Essen- Steele

Re: " > " an jeden Zeilenanfang setzen

Beitrag von Constructus »

Nach [Strg]+[F] im Dialog Suchen & Ersetzen

- Suchen nach: " ^(.*)$ " (ohne "" eingeben)
- Ersetzen durch: " > $1 " (ohne "" eingeben)
- Mehr Optionen {heißt bei mir Zusätze... und regulärer Ausdruck ist da automatisch angehakt}
- [x] Regulärer Ausdruck
- Ersetze alle
Hallo lorbass,

damit hast Du mir vielleicht > 1 Stunde wenig sinnvolle Arbeit erspart (mehrere hundert ">" manuell einfügen). Dankeschön! :)

Aber kleine Frage hintendran: hätte ich die Lösung auch im WIKI finden müssen? Oder ist das neu?

Nette Grüße

Constructus

P. s.: ich hätte gern viel früher geantwortet- aber ein mehrstündiges Unwetter verhinderte das. :(
EDV ist wunderbar - o Wunder, wenn sie funktioniert! {°L*}

Freie Offices auf div. Linuxen + 3 VBoxen mit WIN2K
|| LibO + AOO, auf Linux und WIN2K; portable OO & Co. auf WIN
Genaue Typisierung unmöglich, alles ist "im Fluß"
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: " > " an jeden Zeilenanfang setzen

Beitrag von lorbass »

Constructus hat geschrieben:hätte ich die Lösung auch im WIKI finden müssen? Oder ist das neu?
Reguläre Ausdrücke kennt OOo seit Version 1.1.

Im OOo-Wiki findest du dazu die Beiträge RegulärerAusdruck und SuchenUndErsetzen/ReguläreAusdrücke.

Im Writer-Handbuch, Kapitel 3: Mit Text arbeiten werden Reguläre Ausdrücke nur sehr kurz behandelt. Für weitere Info wird dort auf die Online-Hilfe verwiesen.

Gruß
lorbass
Benutzeravatar
Constructus
*******
Beiträge: 1610
Registriert: Mo, 21.01.2008 18:08
Wohnort: 20 Jahre Brilon - 40 Jahre Essen- Steele

Re: " > " an jeden Zeilenanfang setzen

Beitrag von Constructus »

Hallo lorbass,

danke, soweit hätte ich nie gesucht (bei suchen&ersetzen war Schluß).

Der Begriff reguläre Ausdrücke ist mir zwar bekannt, aber der Sinn sitzt nicht. Irgendwo bei der Recherche habe ich als Alternativbegriff dafür "Platzhalter" gesehen; damit kann ich schon mehr anfangen.

Danke für Deine Unterstützung

Constructus
EDV ist wunderbar - o Wunder, wenn sie funktioniert! {°L*}

Freie Offices auf div. Linuxen + 3 VBoxen mit WIN2K
|| LibO + AOO, auf Linux und WIN2K; portable OO & Co. auf WIN
Genaue Typisierung unmöglich, alles ist "im Fluß"
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: " > " an jeden Zeilenanfang setzen

Beitrag von clag »

Hallo Constructus

wenn ich dich richtig verstanden habe

sollte eigentlich ein

suchen (.*)
ersetzen >$1

deinen Wunsch erfüllen !?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
Constructus
*******
Beiträge: 1610
Registriert: Mo, 21.01.2008 18:08
Wohnort: 20 Jahre Brilon - 40 Jahre Essen- Steele

Re: " > " an jeden Zeilenanfang setzen

Beitrag von Constructus »

Hallo Gast,

ich kenne da als Antwort: Du ganz hast recht... (aber damit ist nicht das Tier gemeint, das ist nur ein absichtlicher Wortdreher).

Ich hatte schon ein paarmal nach "Regulärer Ausdruck" geforscht und natürlich viel gefunden, auch die Liste aus der Hilfe. Nur der Begriff sitzt mir quer, die Funktionalität nicht. Aber zugeben muß ich, daß ich lieber erst den externen Suchroboter ackern lasse statt in den integrierten Hilfen zu suchen; vor allem im Linuxbereich habe ich schon Hilfen gefunden, die alles andere als Hilfe boten.

Das Thema reguläre Ausdrücke ist insgesamt so komplex, daß ich per Suche statt per Nachfrage hier nie an eine Lösung für meinen Einzelfall gekommen wäre. Lorbass war ja so nett, für den Fall sofort den Weg zu präsentieren; sonst brauche ich suchen & ersetzen fast nur für Wortersetzungen.

Danke auch Dir für den Hinweis, aber Du weißt ja sicher: Hasen haben lange Ohren und ergreifen bei geringsten Zweifeln mit langen Sätzen sofort die Flucht... :lol:

Danke für das Interesse

Constructus

P.s.: wie ich mich kenne, brauche ich die Ergänzungsfunktion immer mal wieder, nicht nur das eine mal. 8)
EDV ist wunderbar - o Wunder, wenn sie funktioniert! {°L*}

Freie Offices auf div. Linuxen + 3 VBoxen mit WIN2K
|| LibO + AOO, auf Linux und WIN2K; portable OO & Co. auf WIN
Genaue Typisierung unmöglich, alles ist "im Fluß"
Benutzeravatar
Constructus
*******
Beiträge: 1610
Registriert: Mo, 21.01.2008 18:08
Wohnort: 20 Jahre Brilon - 40 Jahre Essen- Steele

Re: " > " an jeden Zeilenanfang setzen

Beitrag von Constructus »

Hallo clag,

irgendwie hatte ich Deine Antwort leider übersehen... :o
So ganz stimmt Dein Ersatz nicht- da fehlt das Leerzeichen zwischen > und $:
suchen (.*)
ersetzen > $1
Lorbass hatte vorgeschlagen:
- Suchen nach: ^(.*)$
- Ersetzen durch: > $1
> ^ Findet den Suchbegriff nur, wenn er am Absatzanfang steht.
> Sonderinhalte wie z. B. Leerfelder und an Zeichen verankerte Rahmen
> am Absatzanfang werden ignoriert. Beispiel "^Peter".
> ^ besagt, dass die Übereinstimmung am Absatzanfang stehen muss.
> $ Findet den Suchbegriff nur, wenn er am Absatzende steht.
> Sonderinhalte wie z. B. Leerfelder und an Zeichen verankerte Rahmen
> am Absatzende werden ignoriert. Beispiel "Peter$".
> $ besagt, dass die Übereinstimmung am Absatzende auftreten muss.
> . Steht für ein beliebiges einzelnes Zeichen außer
> einem Zeilen- oder einem Absatzumbruch. Beispielsweise liefert
> der Suchbegriff "Schmi.t" liefert sowohl "Schmitt" als auch "Schmidt".
> * Findet keines oder mehr der Zeichen vor dem "*".
> So liefert etwa der Suchbegriff "Ab*c" die Einträge
> "Ac", "Abc", "Abbc", "Abbbc" usw.
> ( ) Im Feld Suchen nach:
> Die in der Klammer enthaltenen Zeichen gelten als Referenz. Auf die erste Referenz im aktuellen Ausdruck können Sie dann mit "\1" Bezug nehmen, auf die zweite mit "\2" usw.
> Enthält Ihr Text zum Beispiel die Zahl 13487889 und Sie führen eine Suche mit dem Ausdruck (8)7\1\1 durch, dann wird "8788" gefunden.
> Zum Gruppieren von Suchtext kann () verwendet werden.
> Beispiel: "a(bc)?d" findet "ad" oder "abcd".
> Im Feld Ersetzen durch :
> Um Referenzen zu ersetzen, verwenden Sie
> statt \ (umgekehrter Schrägstrich) $ (Dollar).
> Um die gesamte gefundene Zeichenkette zu ersetzen, verwenden Sie $0.
Jetzt kann ich noch nicht einordnen, wie das alles zusammengehören soll. Beide Vorschläge scheinen zu funktionieren; ob und wann das Fehlen der ^ $ zu Fehlern führen kann, erkenne ich aus der Hilfebeschreibung (noch) nicht. Zuvor habe ich die Hilfeauszüge teilweise absichtlich per Enter getrennt und beide Formelvorschläge auf getrennte Abschnitte angewendet. Ich sehe im Moment keine Unterschiede.

Danke vielmals für eure Unterstützung

Constructus
EDV ist wunderbar - o Wunder, wenn sie funktioniert! {°L*}

Freie Offices auf div. Linuxen + 3 VBoxen mit WIN2K
|| LibO + AOO, auf Linux und WIN2K; portable OO & Co. auf WIN
Genaue Typisierung unmöglich, alles ist "im Fluß"
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: " > " an jeden Zeilenanfang setzen

Beitrag von clag »

Hallo Constructus,

ok sorry, das Leerzeichen hatte ich übersehen dürfte aber nichts an der Funktion ändern

wenn du (.*) suchst wird eine beliebige Zeichenfolge vom Zeilenanfang bis zum nächsten "carriage return" gefunden
und suchen ersetzen hält ihn als $1 Variable im Speicher bis der Vorgang abgeschlossen ist
somit fügt > $1 den String aus $1 wieder ein und stellt ein "> " vorne an

von daher,
ist meiner Meinung nach das (.*)$ doppelt gemoppelt weil das $ auch auf das "carriage return" hinweist
in diesem Fall ist das also nicht nötig aber auch nicht schädlich.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
Constructus
*******
Beiträge: 1610
Registriert: Mo, 21.01.2008 18:08
Wohnort: 20 Jahre Brilon - 40 Jahre Essen- Steele

Re: " > " an jeden Zeilenanfang setzen

Beitrag von Constructus »

Hallo clag,
ok sorry, das Leerzeichen hatte ich übersehen dürfte aber nichts an der Funktion ändern
Naja, ich hab Deinen Tipp probiert und das fehlende Leerzeichen gesehen; ergänzen und neu testen klappte so gerade noch...
wenn du (.*) suchst wird eine beliebige Zeichenfolge vom Zeilenanfang bis zum nächsten "carriage return" gefunden
und suchen ersetzen hält ihn als $1 Variable im Speicher bis der Vorgang abgeschlossen ist
somit fügt > $1 den String aus $1 wieder ein und stellt ein "> " vorne an
Danke für diesen Hinweis, dies habe ich so nicht gefunden. Jetzt ist mir die ganze Aktion theoretisch klar.
von daher,
ist meiner Meinung nach das (.*)$ doppelt gemoppelt weil das $ auch auf das "carriage return" hinweist
in diesem Fall ist das also nicht nötig aber auch nicht schädlich.
Für mich war wichtig, ob die nicht gesetzten Zeichen irgendwann Fehler verursachen; das ist ja wohl nicht so. Ich sehe ja im Forum immer mal wieder Threads zu suchen & ersetzen; so ganz einfach scheint das Thema ja nicht zu sein.

Was mich aber jetzt vielleicht noch interessiert: hat es irgendwann einen Sinn, das Häkchen bei regulären Ausdrücken abzuwählen? Braucht man das nur nicht immer, oder gibt es ohne ganz andere Funktionen?

Danke für euer Interesse

Constructus
EDV ist wunderbar - o Wunder, wenn sie funktioniert! {°L*}

Freie Offices auf div. Linuxen + 3 VBoxen mit WIN2K
|| LibO + AOO, auf Linux und WIN2K; portable OO & Co. auf WIN
Genaue Typisierung unmöglich, alles ist "im Fluß"
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: " > " an jeden Zeilenanfang setzen

Beitrag von clag »

Moin Constructus,
Constructus hat geschrieben:Was mich aber jetzt vielleicht noch interessiert: hat es irgendwann einen Sinn, das Häkchen bei regulären Ausdrücken abzuwählen? Braucht man das nur nicht immer, oder gibt es ohne ganz andere Funktionen?
normalerweise sind die RegulärenAusdrücke in den Option abgewählt und "Suchen und Ersetzen" behandelt alle eingegebenen Zeichen als Textzeichen
die Zeichenfolge (.*) in suchen würde nun genau das im Text (.*) finden
und ggf durch > $1 ersetzen

erst der gesetzte Haken [x]ReguläreAusdrücke in den Option teilt der "Suchen und Ersetzen" Funktion mit, dass damit (.*) eine besondere Funktion gemeint ist die ausgeführt werden sollen, in diesem Fall "merke dir den String von Zeilenbeginn bis carriage return"
(das gilt natürlich für alle Zeichen die als reguläre Ausdrücke definiert sind [] () {} /\.* .....)
Eine Ausnahme davon kann man wiederum mit dem Backslash machen, suche =\(\.\*\) würde jetzt den Text (.*) finden,
weil der Backslash nun als reguläres Zeichen gewertet bedeutet, das nachfolgende Zeichen soll nicht als regulärer Ausdruck gewertet werden.


bei suchen =(.*) (.*) (.*)
merke dir als $1 alles von Zeilenbeginn bis zum ersten Leerzeichen,
merke dir als $2 alles vom ersten Leerzeichen bis zum nächsten Leerzeichen
merke dir als $3 alles vom "zweiten Leerzeichen" bis zum "carriage return"

ersetzen =$3 $2 $1

damit könnte man zB so eine Liste
Vorname Name Ort
Dirk Müller Berlin
Linda Müller Berlin

in eine solche Liste
Ort Name Vorname
Berlin Müller Dirk
Berlin Müller Linda
wandeln
Zuletzt geändert von clag am Fr, 16.07.2010 10:45, insgesamt 2-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: " > " an jeden Zeilenanfang setzen

Beitrag von lorbass »

clag hat geschrieben:von daher,
ist meiner Meinung nach das (.*)$ doppelt gemoppelt weil das $ auch auf das "carriage return" hinweist
in diesem Fall ist das also nicht nötig aber auch nicht schädlich.
(.*) und ^(.*)$ sind in der Tat gleichwertig. Ich habe die zweite Form gewählt, um dem mit Regulären Ausdrücken nicht unbedingt erfahrenen Benutzer deutlich zu machen, dass der vollständige Text .* vom Zeilenanfang ^ bis zum Zeilenende $ gesucht wird. Eine Zeile wird allerdings nicht nur von der Absatzmarke ¶ (Carriage Return, Eingabetaste, [ENTER]) , sondern auch vom Zeilenumbruch ↵ ([UMSCHALT]+[ENTER]) abgeschlossen.

Gruß
lorbass


EDIT: Tippfehler behoben.
Zuletzt geändert von lorbass am Fr, 16.07.2010 11:16, insgesamt 1-mal geändert.
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: " > " an jeden Zeilenanfang setzen

Beitrag von clag »

Ja habe ich !

möglicherweise hast du die mini Beispielliste aus den Forum kopiert und in Writer eingesetzt ?
dann hast du kein echtes "carriage return" im Text und du müsstest das zuerst mit
Suchen \n
ersetzen \n
korrigieren

wenn so eine Liste von Hand eingegeben wurde gibt es das (carriage return) gleich nach jedem "Enter"

ich hoffe du kannst mir zustimmen !?

edit :
Tippfehler ? ;)
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: " > " an jeden Zeilenanfang setzen

Beitrag von clag »

Hallo lieber Gast,

ich weiß jetzt nicht mit welchen Browser du das Forum betrachtest und wie du die Zeilen kopierst,
aber

1. die mini Liste enthält keine Leerzeichen am Ende des letzten Wortes (kannst du ganz einfach durch markieren der Zeilen prüfen, wenn da ein Leerzeichen wäre würde es auch markiert werden hier bei mir hört die Markierung direkt nach dem Letzten Buchstaben im Wort auf ! )

2. selbst wenn es so wäre würde sich das letzte Klammerpaar (.*) nicht daran stören, es sucht bis carriage return auch wenn 5 Leerzeichen davor stehen würden.

3. der von dir vorgeschlagene Suchbegriff
Gast hat geschrieben:Dies muß bei Eingabe des Suchbegriffs berücksichtigt werden:
(.*)_(.*)_(.*)_
ist eher ungeeignet, weil der explizit ein Leerzeichen vor dem CR erwarten würde, welches aber nicht existiert
Gast hat geschrieben:Suchen nach (.*)_(.*)_(.*) klappt dann nicht.
das betrachte ich also als ein Versehen deinerseits 8)


Das nicht funktionieren bei den aus dem Forum kopierten mini Liste resultiert aus dem einfachen "Linefeed" welches beim einfügen aus dem Browser von Writer verwendet wird, schalte die nicht druckbaren Zeichen auf sichtbar dann wird es deutlicher.

Ein "Carriage return Linefeed" (DOSwelt) besteht eigentlich aus 2 Zeichen hex 0A 0D und Writer macht daraus beim Import in meinen Augen fälschlicherweise ein "Leerzeichen Linefeed" UNIXwelt (nutzt nur 0D) richtiger wäre nur ein Linefeed.

Wenn man nun noch S&E mit suchen \n ersetzen \n aufruft wird aus dem hex 0D ein hex 0A0D
und plötzlich ist ein Leerzeichen da, wo vorher keins war !

also Writer kann sozusagen zaubern :lol:

ich hoffe du magst mir dieses mal doch zustimmen :D


edit: ..leichte Korrektur

Code: Alles auswählen

Vorname Name Ort
Dirk Müller Berlin
Linda Müller Berlin
Wenn man die mini Liste zB hier aus den Code Bereich per "ALLES AUSWÄHLEN" kopiert und in Writer einfügt, wird kein nicht druckbares Zeichen erzeugt und ein absolut korrektes "carriage return linefeed" eingefügt.

Markiert man innerhalb der Code Box den Text und fügt ihn in Writer ein wird im Gegensatz zum kopieren aus dem Textbereich kein nichtdruckbares Zeichen vor dem Linefeed eingefügt und dann funktioniert auch suchen mit (.*) (.*) (.*) ersetzen $3 $2 $1 problemlos !

Es bleibt ist also ein Problem das durch den Import der Daten aus dem Browser entsteht und bei manueller Eingabe nicht entstehen könnte weil ein Enter ein richtiges "carrige return linefeed" erzeugt.
Das kann aber auf einer Linux Maschine auch wieder ganz anders sein !
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: " > " an jeden Zeilenanfang setzen

Beitrag von clag »

Hallo Gast ...... 8)

mir ist gerade noch eine Möglichkeit eingefallen die alle "Probleme" beseitigt und genau das tut was ich/man erwartet hätte

die so simpel wie auch logisch ist dass ich mich fast schäme sie so spät zu nennen aber du hast sie auch nicht genannt, :oops:

darum weise ich jetzt doch noch darauf hin und für künftige Quer und Gegen Checks sollte man es auch in Hinterkopf behalten

ctrl + shift + V

unformatierter Text
Text_Import_Writer-4x.jpg
Text_Import_Writer-4x.jpg (41.96 KiB) 2107 mal betrachtet
und schon passt alles !
es wird in jedem der 3Fälle der Text ohne Leerzeichen am Ende und mit korrektem "carriage return" eingefügt
lediglich bei dem Code alles auswählen werden am Anfang der Zeile Leerzeichen eingefügt

hier könnte man jetzt getrost von des Anwenders Fehler sprechen :lol:
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten