mikrocontroller.net

Forum: PC-Programmierung Text in einer Datei suchen und verschieben


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Yanis (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Guten Abend liebe Gemeinde,

ich stehe hier vor einem Problemchen, ich muss in einer Text-Datei ein 
Wort suchen und um mehrere Zeilen verschieben.

Klar mann kann das mit der Hand machen, aber wenn das sich um sehr viele 
Elemente handelt wird es zu einem Problem!

Weiß jemand wie mann das am besten lösen könnte?

Viele Grüße und einen schönen Abend noch !!!

von Erwin D. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Yanis schrieb:
> Weiß jemand wie mann das am besten lösen könnte?

Eine Lösung (von vielen) wäre notepad++ mit Makro...

von A. S. (achs)


Bewertung
2 lesenswert
nicht lesenswert
Könntest Du das Problem denn in Worte fassen? Nur dann kann man es 
umsetzen.

von werists (Gast)


Bewertung
0 lesenswert
nicht lesenswert
1. Phython

2. awk (Linux) oder gawk (Win)
3. Perl

von Openbsd (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Yanis schrieb:
> Guten Abend liebe Gemeinde,
>
> ich stehe hier vor einem Problemchen, ich muss in einer Text-Datei ein
> Wort suchen und um mehrere Zeilen verschieben.
>



Nimm den vi! Editor.

von Christian M. (Firma: magnetmotor.ch) (chregu) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Openbsd schrieb:
> vi

Der ist doch ausgestorben...

Beitrag "Vi Editor ausgestorben?"

Gruss Chregu

von Dirk B. (dirkb2)


Bewertung
1 lesenswert
nicht lesenswert
Vielleicht geht auch sed

von Sebastian S. (amateur)


Bewertung
0 lesenswert
nicht lesenswert
Natürlich kann man so etwas mit dem Notepad (Makro Recorder) machen, 
aber spätestens wenn Du das automatisieren willst, wirst Du mit der 
Definition von:
>>um mehrere Zeilen verschieben.
Probleme bekommen.

Praktisch alle Makros wollen "genau" wissen, was ausgeschnitten werden 
soll und wohin mit dem Ausschnitt. Das kann ein paar Mal gut gehen, aber 
die Ergebnisse können aber auch ausgesprochen Lustig werden.
Dann merkt man schnell, dass die üblichen Suchfunktionen sehr "dumm" 
sind, da sie stur Buchstabenfolgen suchen. Die Suche nach "Laut" findet 
auch "Umlaut" oder Lautstärke und das in jedem Falle, auch wenn Du es so 
nicht gewollt hast. Manchmal erscheint so ein Suchbegriff auch im 
"falschen" Kontext. Hier wird es schnell lustig.
Definitionen wie "mehrere Zeilen" sind schlicht und ergreifend unsinnig. 
So Sachen wie eine Zeile runter ergibt ein völlig anderes Bild, wenn das 
Wort am Zeilenanfang steht wie am Zeilenende. Noch lustiger wird es, 
wenn die Darstellungsroutine dieses Wort eigenmächtig an den 
Zeilenanfang stellt, obwohl es in Wirklichkeit am Zeilenende stand 
(automatischer Zeilenumbruch).

Unter Notepad würde ich das Problem zweiteilen.
Eine einfache Suche mit ctrl+f.
Gucken ob die Umgebung stimmt.
Jetzt weißt Du wo der Cursor steht.
Ab hier einen Makro erstellen, der die restlichen Schritte ausführt.
Und weiter mit manuellem ctrl+f – kontrollieren – ggf. Makro ausführen.

: Bearbeitet durch User
von Dirk B. (dirkb2)


Bewertung
1 lesenswert
nicht lesenswert
Mit Regulären Ausdrücken kann man da sehr, sehr viel machen.

von Frank M. (ukw) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Dirk B. schrieb:
> Mit Regulären Ausdrücken kann man da sehr, sehr viel machen.

Innerhalb einer Zeile: Ja.
Einen Ausdruck um mehrere Zeilen nach unten schieben: Schwierig.

Der TO sollte seine Aufgabe präziser formulieren. Sonst artet das hier 
in Spekulation aus.

von Kommandozeile vor dem Fruehstueck fuer Alle! (Gast)


Bewertung
0 lesenswert
nicht lesenswert
>  Die Suche nach "Laut" findet
> auch "Umlaut" oder Lautstärke und das in jedem Falle, auch wenn Du es so
> nicht gewollt hast.

Deswegen nutzt man PCRE[1] und sucht nach r'\WLaut\W' oder 
r'\W[Ll]aut\W'.

> Definitionen wie "mehrere Zeilen" sind schlicht und ergreifend unsinnig.
> So Sachen wie eine Zeile runter ergibt ein völlig anderes Bild, wenn das
> Wort am Zeilenanfang steht wie am Zeilenende.

Deswegen von "Zeilen" verabschieden und Option MULTILINE und/oder DOTALL 
von PCRE verwenden. Nicht dass es dadurch einfach wird, aber doch 
moeglich.


> > Mit Regulären Ausdrücken kann man da sehr, sehr viel machen.
Jap, inklusive eingewachsene Zehennaegel auskurieren

> Innerhalb einer Zeile: Ja.
> Einen Ausdruck um mehrere Zeilen nach unten schieben: Schwierig.

Die Kunst besteht darin, das Suchmuster und das Einfuegemuster getrennt 
ausformulieren.


> Der TO sollte seine Aufgabe präziser formulieren.
> Sonst artet das hier in Spekulation aus.

Ja TO, mach ma' Beispiel. Prosa Text oder synthetischer Text (wie Daten 
oder Quellcode)?


[1] PCRE
  * <https://pcre.org/pcre.txt>;


NB: Editoren ohne (PC)RE sind deren (Zeit-)Ver(sch-)wendung nicht wert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.