
4352812247
21.10.2022, aktualisiert um 14:47:08 Uhr
Wort aus txt-Datei finden und nachfolgendes ausgeben
Hallo zusammen,
Ich würde gerne eine Überprüfung programmieren, bei der in einer .txt-Datei nach einem Wort gesucht wird.
Anschließend soll, falls das Wort gefunden wird, alles was danach kommt in eine neue .txt-Datei übertragen werden.
Dies sollte am Besten bei allen gesuchten Sätzen mit gesuchtem Wort funktionieren.
Beispiel:
In Datei 1 steht:
Peter: Ich suche Schnee
Paul: Ich liebe Schnecken
Peter: Ich fahre Auto
Ich suche nach dem Wort "Peter:"
In Datei 2 wird geschrieben:
Ich suche Schnee
Ich fahre Auto
Danke schonmal vorab.
Es geht um Windows
Ich würde gerne eine Überprüfung programmieren, bei der in einer .txt-Datei nach einem Wort gesucht wird.
Anschließend soll, falls das Wort gefunden wird, alles was danach kommt in eine neue .txt-Datei übertragen werden.
Dies sollte am Besten bei allen gesuchten Sätzen mit gesuchtem Wort funktionieren.
Beispiel:
In Datei 1 steht:
Peter: Ich suche Schnee
Paul: Ich liebe Schnecken
Peter: Ich fahre Auto
Ich suche nach dem Wort "Peter:"
In Datei 2 wird geschrieben:
Ich suche Schnee
Ich fahre Auto
Danke schonmal vorab.
Es geht um Windows
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4352895082
Url: https://administrator.de/forum/wort-aus-txt-datei-finden-und-nachfolgendes-ausgeben-4352895082.html
Ausgedruckt am: 20.05.2025 um 15:05 Uhr
9 Kommentare
Neuester Kommentar

Batch
PowerShell
@echo off
set "search=Peter:"
set "datei1=c:\datei1.txt"
set "datei2=c:\datei2.txt"
>"%datei2%" (for /f "tokens=1,* delims=: " %%a in ('findstr /ilbc:"%search%" "%datei1%" 2^>nul') do echo.%%b)
$search = "Peter:"
$datei1 = "c:\datei1.txt"
$datei2 = "c:\datei2.txt"
Get-Content $datei1 | ?{$_ -match "^$([regex]::escape($search))\s*(.*)"} | %{$matches[1]} | set-content $datei2

Die Fragenden möchten sich bitte mal angewöhnen, das Betriebssystem anzugeben, unter dem die angestrebte Lösung funktionieren soll. Gerade im Admin-Bereich arbeiten viele mit Unixen und nicht mit Windows.
Hier mal eine Lösung, die unter fast allen Unixen funktioniert (auch macOS):
Erklärung:
- Der "grep"-Befehl gibt nur Zeilen aus der Datei "datei.txt" aus, die das Suchwort "Peter:" enthalten.
- Der Befehl "sed" sucht und ersetzt alle "Peter: " (mit Blank am Ende) durch nichts und das noch global, also mehrfach. Die Parameter sind durch Schrägstrich abgegrenzt. Der erste, "s" bedeutet: Suchen. Dann folgt, wonach gesucht wird, dann folgt nichts (d.h. es gibt dort zwei Schrägstriche hintereinander "//", dann folgt noch ein "g", was "global" bedeutet. In dem Fall würden alle "Peter: " ersetzt werden, die gefunden wurden.
Die Ausgabe kann man in eine neue Datei umleiten, z.B. per " > neuedatei.txt".
Hier mal eine Lösung, die unter fast allen Unixen funktioniert (auch macOS):
grep 'Peter:' datei.txt | sed 's/Peter: //g'
Erklärung:
- Der "grep"-Befehl gibt nur Zeilen aus der Datei "datei.txt" aus, die das Suchwort "Peter:" enthalten.
- Der Befehl "sed" sucht und ersetzt alle "Peter: " (mit Blank am Ende) durch nichts und das noch global, also mehrfach. Die Parameter sind durch Schrägstrich abgegrenzt. Der erste, "s" bedeutet: Suchen. Dann folgt, wonach gesucht wird, dann folgt nichts (d.h. es gibt dort zwei Schrägstriche hintereinander "//", dann folgt noch ein "g", was "global" bedeutet. In dem Fall würden alle "Peter: " ersetzt werden, die gefunden wurden.
Die Ausgabe kann man in eine neue Datei umleiten, z.B. per " > neuedatei.txt".

Kleiner Typo ist korrigiert, funktioniert hier im Test....

Fürs Verständnis bitte lesen:
Tutorial zur FOR-Schleife
https://ss64.com/nt/findstr.html

Fürs Verständnis bitte lesen:
Tutorial zur FOR-Schleife
https://ss64.com/nt/findstr.html