Script: Bestimmte Zeile einer Text-Datei auswählen [PowerShell]

Hallo,

ich wollte letztens eine zufällige Zeile einer Textdatei auswählen.
Um das zu erreichen, muss man erst verstehen, wie man auf eine bestimmte Zeile zugreifen kann und das möchte ich euch zeigen.

Als erstes holen wir uns den gesamten Inhalt einer Textdatei:

Nun steht der Inhalt der Text Datei: D:\Coding\Testfile.txt in der Variable Inhalt.
Nun wollen wir die dritte Zeile der Textdatei lesen:

Wenn wir jetzt aber gerne eine zufällige Zeile haben müssen wir den Befehl Get-Random in den Index schreiben. Hier ist aber zu beachten, dass wir den Index nicht überschreiten dürfen. Dafür nutzen wir den Parameter -Maximum, was wir jetzt noch wissen müssen, wie viele Zeilen hat denn die ausgewählte Textdatei.
Das können wir mit dem Befehl Measure-Object in Erfahrung bringen, dort haben wir den Parameter -Line. Zusammengefügt sieht das nun so aus:

Ein Dank geht raus an Martin Binder, der die Korrektur vorschlug nur einmal den Content einzulesen.

Dies funktioniert ebenfalls für eine zufällige oder bestimmte Datei in einem Ordner.

In dem Sinne: Frohes Zeilen wählen.

4 comments

  • Warum zweimal einlesen und nicht erst in eine Variable, dann die messen? 🙂
    $Content = Get-Content Test.txt
    $RndLine = $Content[ ( Get-Random -Maximum $( $Content.Count ) ) ]

    • Vollkommen richtig, ich war zu vernarrt darauf dies in einem Einzeiler zu erreichen und habe nicht über die Effizienz nachgedacht! Ich würde deinen Vorschlag direkt mal übernehmen. Vielen Dank!

  • Interessanter Artikel, werde ich vermutlich auch noch einmal drauf zurückkommen, wird mir denke ich noch behilflich sein!

  • Hallo,
    ich hatte das ganze eben mal nachgestellt und mich gewundert warum mir als Ergebnis immer nur ein einzelner Buchstabe und nicht das Wort aus der 1 Zeile aufgelistet worden ist.

    Das Phänomen trat auf weil in der Datei, die eingelesen wurde, nur in der ersten Zeile Text stand, die Powershell scheint dies zu erkennen und zeigt daraufhin nicht die jeweilige Zeile sondern nur den jeweiligen Buchstaben (dessen Position in der Eckigenklammer angegeben wurde) an.

    Sobald mehrere Zeilen in der Datei vorhanden sind, funktioniert der Aufruf wie beschrieben 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

CommentLuv