4352812247

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
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

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

4091525239
Lösung 4091525239 21.10.2022 um 10:51:23 Uhr
Goto Top
Batch
@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)  
PowerShell
$search = "Peter:"  
$datei1 = "c:\datei1.txt"  
$datei2 = "c:\datei2.txt"  
Get-Content $datei1 | ?{$_ -match "^$([regex]::escape($search))\s*(.*)"} | %{$matches[1]} | set-content $datei2  
137960
137960 21.10.2022 um 11:25:23 Uhr
Goto Top
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):

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".
Crusher79
Crusher79 21.10.2022 um 12:06:47 Uhr
Goto Top
Naja Hashtag Batch nicht Bash. In an die 90% der Fälle liegt man mit Windows Batch da schon richtig.

Aber allein die Fragestellung hätte mich auch zu sed und grep gebracht. Sind auch beliebte Einstiegsaufgaben in Bereich Informatik. Und da wird gern einmal Linux genommen.
4352812247
4352812247 21.10.2022 um 14:23:41 Uhr
Goto Top
Zitat von @137960:

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):

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".

Es bringt mir dann folgenden Fehler: sed: -e expression #1, char 1: unknown command: `''

Können Sie da weiter helfen?
Crusher79
Crusher79 21.10.2022 um 14:36:21 Uhr
Goto Top
Unter Windows 10? In der Eingabeaufforderung? PowerShell?

Wo sind wir???

@4091525239 hat für Windows die wesentlichen Punkte schon angerissen! Wieso jetzt einmal sed und grep?
4352812247
4352812247 21.10.2022 aktualisiert um 14:48:25 Uhr
Goto Top
Ah das hab ich überlesen.
Somit ist die vorherige Frage überflüßig
4352812247
4352812247 21.10.2022 um 14:54:04 Uhr
Goto Top
Zitat von @4091525239:

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

Der Batch Code funktioniert bei mir so nicht.
Können Sie die einzelnen Kommandos etwas näher erläutern?
4091525239
4091525239 21.10.2022 aktualisiert um 15:27:05 Uhr
Goto Top
Kleiner Typo ist korrigiert, funktioniert hier im Test....

screenshot

Fürs Verständnis bitte lesen:
Tutorial zur FOR-Schleife
https://ss64.com/nt/findstr.html
4352812247
4352812247 21.10.2022 um 15:30:00 Uhr
Goto Top
Zitat von @4091525239:

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

screenshot

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

Super, vielen Dank!