Ansicht:   

#472971

Mr. Teflon

02.02.2025, 13:03:19
(editiert von Mr. Teflon, 02.02.2025, 13:03:45)

Batch - Wie Zeilen in Textdatei bearbeiten/splitten? (ed) (pc.coding)

Hallo,

ich habe eine Textdatei und möchte alle Zeilen splitten und etwas nachbearbeiten. Weil das alles stumpfe Tastendrücke mit ständiger Wiederholung sind, frage ich mich ob man das automatisieren könnte.

Bspw. sind viele Zeilen im folgendem Muster enthalten

cezerio_mini.name=cezerio mini dev
waveshare_lcd.name=Waveshare LCD-1.85
yb_eth.name=YelloByte YB-S3-ETH


Jetzt mach ich derzeit folgendes von Hand. Ich schneide den vorderen Teil bis '=' inkl. '=' aus und füge ihn jeweils darunter ein. Oben kommt noch eine '# ' davor.

# cezerio mini dev
cezerio_mini.name=
# Waveshare LCD-1.85
waveshare_lcd.name=
# YelloByte YB-S3-ETH
yb_eth.name=



Der i-Punkt wäre noch wenn man 'name=' durch 'hide=true' ersetzen kann. Das geht aber auch mit dem suchen/ersetzen in jeden Editor am Ende.

Gibt es dafür Möglichkeiten?
cmd, Powershell, Python steht zur Verfügung, aber kaum genutzt. OS ist Win11.

--
___________
Tschau
Mr. Teflon

#472977

MudGuard zur Homepage von MudGuard

München,
02.02.2025, 18:03:46

@ Mr. Teflon

Batch - Wie Zeilen in Textdatei bearbeiten/splitten?

> ich habe eine Textdatei und möchte alle Zeilen splitten und etwas
> nachbearbeiten. Weil das alles stumpfe Tastendrücke mit ständiger
> Wiederholung sind, frage ich mich ob man das automatisieren könnte.
>
> Bspw. sind viele Zeilen im folgendem Muster enthalten
>
>

cezerio_mini.name=cezerio mini dev
> waveshare_lcd.name=Waveshare LCD-1.85
> yb_eth.name=YelloByte YB-S3-ETH
> 


> Jetzt mach ich derzeit folgendes von Hand. Ich schneide den vorderen Teil
> bis '=' inkl. '=' aus und füge ihn jeweils darunter ein. Oben kommt noch
> eine '# ' davor.
>
>

# cezerio mini dev
> cezerio_mini.name=
> # Waveshare LCD-1.85
> waveshare_lcd.name=
> # YelloByte YB-S3-ETH
> yb_eth.name=
> 


>
> Der i-Punkt wäre noch wenn man 'name=' durch 'hide=true' ersetzen kann.
> Das geht aber auch mit dem suchen/ersetzen in jeden Editor am Ende.

kann Dein Editor Reguläre Ausdrücke beim Suchen/Ersetzen?
Wenn ja: Suche nach

 ^(.*?=)(.*?)$


Ersetze durch

# $2\n$1



Beim Suchen: ^Zeilenanfang, $ Zeilenende, () zum Merken, . beliebiges Zeichen, * beliebig oft, ? aber nicht übertreiben
Beim Ersetzen: $2 bezieht sich auf das zweite Klammerpaar, $1 auf das erste, \n ist der Zeilenumbruch.

(ggf - je nach Editor - muß es beim Ersetze-Ausdruck auch \2 und \1 heißen)
Das name= dann in einem 2. Ersetzungsschritt.

--
[image]
MudGuard
O-o-ostern

#473819

Mr. Teflon

25.03.2025, 20:00:26

@ MudGuard

Batch - Wie Zeilen in Textdatei bearbeiten/splitten?

Hallo,

das ist mir peinlich. Ich hatte nicht mitbekommen das jemand geantwortet hatte. Ich werde es ausprobieren. Jedenfalls vielen Dank an Euch.

--
___________
Tschau
Mr. Teflon

#473821

Pahoo

bei Ingelheim,
26.03.2025, 14:34:19
(editiert von Pahoo, 26.03.2025, 14:34:56)

@ Mr. Teflon

Batch - Wie Zeilen in Textdatei bearbeiten/splitten? (ed)

Wenn dein input in input.txt steht, dann sollte es diese PowerShell Pipeline tun, die du im gleichen Verzeichnis laufen lässt.
Dein output wird in output.txt geschrieben.

Get-Content input.txt | ForEach-Object {
    if ($_ -match "^(.*?\.name)=(.*)$") {
        "# $($matches[2])"
        "$($matches[1]).hide=true"
    }
} | Set-Content output.txt



Getestet. Funzt.

--
Wenn du etwas so machst, wie du es seit zehn Jahren gemacht hast, dann sind die Chancen groß, dass du es falsch machst. (Charles Kettering)

#474016

Mr. Teflon

06.04.2025, 19:32:02

@ Pahoo

@ all - Vielen Dank

Sorry für späte Meldung.
Habe von euch alles ausprobiert.
Funktioniert alles.  :ok:
Das hilft mir sehr weiter.
Vielen Dank.

--
___________
Tschau
Mr. Teflon

#474017

Mr. Teflon

06.04.2025, 20:06:00
(editiert von Mr. Teflon, 06.04.2025, 20:07:48)

@ Mr. Teflon

kleine Änderung (ed)

Hatte nicht zu 100% hingeschaut.
Bei der prima Vorlage fiel es mir jedoch leicht, eine Änderung zu machen.  :-)
.name wird durch .hide=true komplett ersetzt.
Ich habe es wie folgt gelöst.

Get-Content input.txt | ForEach-Object {
    if ($_ -match "^(.*?\.name)=(.*)$") {
        "# $($matches[2])"
        $($matches[1]).Replace('.name','.hide=true')
    }
} | Set-Content output.txt



Die Bearbeitung mit Notepad++ funktioniert auch einwandfrei. Das Powershell Script erledigt alles in einem Rutsch, weshalb das jetzt mein Favorit in der Verwendung ist.

Vielen Dank nochmal an alle.

--
___________
Tschau
Mr. Teflon

#472980

rstilz

02.02.2025, 21:36:52

@ Mr. Teflon

Batch - Wie Zeilen in Textdatei bearbeiten/splitten?

> Wiederholung sind, frage ich mich ob man das automatisieren könnte.
Anders wäre mit den heutigen Möglichkeiten von Software auch unnötig.

Es gibt ausser den "hardcore-Weg" mit regulären Ausdrücken noch eine "sanftere" Methode:
Nutze einfach die Textfunktionen deiner Tabellenkalkulation (in den verlinkten Bildern am Beispiel von einem portablen Libreoffice dargestellt).

A) Kopieren des gesamten Textes um ihn im Clipboard zu haben (ev darauf achten einen "simplen" Editor zu verwenden der keine ggf störenden Formatierungen mitschleppt)

B) in Libreoffice diesen Text per Ctrl-V einfügen. Im darauf erfolgten Dialog das "=" als Trennzeichen definieren!
Danach hast du die beiden Textteile schon einmal sauber separiert.

C) Jetzt einfach in einer Nachbarspalte einen neuen Text "zusammensetzen" ganz wie du es möchtest. In Libreoffice zB werden die Einzelteile (also zusätzlicher Text und die Zellinhalte) per "&" aneinandergereiht (s Bild-link). Der "Trick" an dieser Stelle besteht in der Verwendung von "char(13)" das einen Zeilenumbruch schreibt.

Und Voila, fertig ist die Umwandlung. Die Inhalte der Zellen nun wieder mit Ctrl-C/Ctrl-V in einen Texteditor kopieren und dort so abspeichern wie benötigt.
HTH

P.S.
> Der i-Punkt wäre noch wenn man 'name=' durch 'hide=true' ersetzen kann.
Das ginge zwar einzubauen, würde den eigentlichen "Code" aber unnötig verkomplizieren.

Ansicht:   
Auf unserer Web-Seite werden Cookies eingesetzt, um diverse Funktionalitäten zu gewährleisten. Hier erfährst du alles zum Datenschutz