Nerd-Tipp
20.03.2024, 11:00 Uhr
Zeige alle Zeilen, die einen Begriff enthalten
Haben Sie eine Text-Datei und wollen sich schnell alle Zeilen anzeigen lassen, die einen bestimmten Begriff enthalten? Mit der Windows-PowerShell gehts fast so komfortabel wie unter Linux.
Mit PowerShell lassen sich Zeilen in Textdateien nach bestimmen Begriffen durchsuchen
(Quelle: PCtipp.ch)
Neulich hat mich ein Kollege gefragt, ob ein bestimmter PCtipp-Forumsnutzer schon mal den monatlich von uns ausgelobten Forums-Hunderter bekommen hat. Seit Beginn dieses «Leser helfen Lesern»-Wettbewerbs schreibe ich die Gewinner in eine Textdatei. Inzwischen ist sie auf über 220 Zeilen angewachsen. Ich wollte jetzt nicht nur herausfinden, ob der Name in der Datei einmal vorkommt, sondern wollte gleich alle zutreffenden Zeilen sehen.
Lösung: Was liegt da näher, als die PowerShell zu bemühen? Öffnen Sie den Ordner, in dem die Datei liegt. Klicken Sie mit rechts auf eine freie Stelle im Ordner und wählen Sie In Terminal öffnen. Die Syntax lautet nun wie folgt; den senkrechten Strich | bekommen Sie auf dem Schweizer Tastaturlayout mittels AltGr+7:
Get-Content '.\Dateiname.txt' | Select-String -pattern "Mein Suchbegriff"
Es geht auch etwas kürzer, denn Get-Content ist einer der Befehle, die sich abkürzen lassen, hier mit gc:
gc '.\Meine lange Liste.txt' | Select-String -pattern "Beispielerich"
Ersetzen Sie Dateiname.txt einfach durch jenen Ihrer Datei und "Mein Suchbegriff" durch Ihren Suchbegriff, ebenfalls in Anführungszeichen.
Wichtig: Es muss sich um eine reine Textdatei handeln, also eine, die Sie auch im Notepad-Editor öffnen könnten, wobei dies auch eine .ini- oder .csv-Datei sein darf.
Wollen Sie das Resultat auch gleich in eine neue .txt-Datei schreiben? Hängen Sie dem Befehl nochmals ein Pipe-Zeichen | an, gefolgt von Out-File und dem Dateinamen, also zum Beispiel so:
gc '.\Meine lange Liste.txt' | Select-String -pattern "Beispielerich" | Out-File resultat.txt
Linux (und Mac) mit grep
Hätte ich gerade an einem Linux-Gerät gesessen, wäre es noch etwas einfacher gewesen. Unix- und Linux-Terminals bringen seit jeher den grep-Befehl mit. Mittels grep -F 'Mein Suchbegriff' Dateiname.txt erscheinen auch da alle Zeilen, die den gesuchten Begriff enthalten. Und da es sich bei MacOS um ein unixoides Betriebssystem handelt, dürfte der grep-Befehl auch dort genauso funktionieren.
Die Ausgabe in eine Textdatei ist ebenfalls einfacher, denn Sie hängen einfach ein Grösser-als-Zeichen und den Dateinamen an:
grep -F 'Mein Suchbegriff' Dateiname.txt > resultat.txt
20.03.2024