đź’ˇPowershell Tip: Tail und Head vereint
Ausgabe der letzten und der ersten n-Zeilen in einemBefehl
In Unix/Linux Derivaten sind die Befehle tail und Head oft benutzte Werkzeuge zur Ausgabe der ersten/letzten Zeilen einer Datei oder der Ergebnisse eines Befehls. Direkt kombinieren kann man sie nicht. Hier sind sed/awk und andere Werkzeuge und Lösungen gefordert. Powershell bietet eine sehr effiziente Lösung.
Der erste Ansatz wäre die Ausgabe mit Select -Last und Select -First zu behandeln.
Get-ChildItem somefolder | Select -First 10Get-ChildItem somefolder | Select -Last 10Das geht aber nicht in einem Befehl (oder nur mit einer zu schreibenden Funktion). Damit haben wir das gleiche Problem wie mit head und tail in Unix.
Per Get-ChildItem und einem auf die Ausgabe angewendetem Sort Befehl erhält man eine Liste. Diese Ausgabe kann man als Array / Liste von Zeichenketten interpretieren und einzelne Elemente mit einen nachfolgenden Index in eckigen Klammern auswählen.
(Get-Content hashes.csv)[1]Der “Trick” besteht darin, dass eine solche Powershell Liste auch einen Bereich adressieren kann und dieser Bereich “ĂĽberlaufen” darf und dann von vorn anfängt. [0..10] gibt die ersten 11 Elemente aus. [10..-1] gibt alle Zeilen ab der 11. Zeile bis zur letzten (-1) aus.
[-10..10] gibt die letzten 10 und die ersten 11 Zeilen aus (da 0 die erste Zeile ist). Das Ergebnis sieht etwas ungewöhnlich aus, da zuersrt die letzten Zeilen ausgegeben werden:
Get-ChildItem $folder *jpg | Sort-Object LastWriteTime)[-10..10]

Dieses Verfahren funktioniert fĂĽr alle Listausgaben, wie Get-ChildIten, Get-Content, Get-Prozess und so weiter.