Archiv für den Monat: Juni 2020

Tipp des Tages: Quelltextdateien durchsuchen und das Ergebnis sortieren mit einer Prise Regex

Dieser kleine Tipp ist für Entwickler interessant, die ihre Quelltetdateien nach einem Eintrag wie Substring(22,1) oder Substring(37,1) durchsuchen und die Rückgabe nach der ersten Ziffer in der runden Klammern sortieren möchten. Klingt vielleicht kompliziert, ist aber mit der üblichen Prise Regex dann doch relativ einfach.

dir *.prg -rec | 
 Select-String "strZulassung:Substring\((\d+),\d+\)" | 
 Sort-Object {[Int]$_.Matches[0].Groups[1].Value}

Der Regex bedeutet: Suche alle Zeilen, die ein strZulassung:Subtring(<Zahl>, <Zahl>) enthalten, wobei <Zahl> jeweils für eine Zahl steht. Die erste Zahl soll als Gruppe abgreifbar sein, daher noch ein Paar runder Klammern. Die runden Klammern der Function müssen per \ escaped werden. Ausgangspunkt ist eine Verzeichnishierarchie mit Quelltextdateien (hier .prg-Dateien).

Ich kann nur empfehlen, sich mit dem Thema reguläre Ausdrücke etwas zu beschäftigen, denn bereits mit den absoluten Basics kommt man relativ weit (die PowerShell-Hilfe about_regular_expressions ist für den Einstieg absolut ausreichend).

Natürlich kennt auch die Visual Studio-Suche reguläre Ausdrücke, nur lässt sich das Ergebnis nicht so einfach sortieren.

$PSVersionTable.Platform -eq „Unix“ ? „Cool“ : „Windows, what else?“

Ich bin immer wieder fasziniert, wie selbstverständlich es ist inzwischen geworden ist, die PowerShell 7 unter einem Linux wie Cent OS 7 zu installieren. Die ganze Installation dauert noch nicht einmal eine Minute, wenn man die Installationsschritte von der Projektwebseite in die Konsole des SSH-Terminalfensters (ich empfehle MobaXTerm) kopiert.

Abb. 1. Die „Installationsanleitung“ für die Installation der PowerShell 7 unter CentOS

Ging alles gut, wird die PowerShell durch Eingabe von „pwsh“ gestartet. Der Rest ist selbsterklärend. Vielleicht nicht ganz, denn bei PowerShell 7 gibt es ein paar nette Neuerungen wie den sehr praktischen Tenäroperator ? (ergänzt durch ein :).

Abb. 2: Eine kurze PowerShell-Session unter Cent OS

Wer die Neuerungen der PowerShell 7 ausprobieren möchte, muss dazu natürlich kein Linux installieren. Die PowerShell 7 gibt es natürlich auch für Windows;)

Tipp des Tages: Verzeichnis anlegen und dahin wechseln

In Unix-Shells gibt es den beliebten &&-Operator zum Ausführen eines zweiten Prozesses, z.B. um in ein per mkdir angelegtes Verzeichnis per cd zu wechseln. Bei PowerShell geht es dank der Objekte etwas einfacher:

cd (mkdir h).FullName

Zuerst legt mkdir ein neues Verzeichnis an. Da dieses als (DirectoryInfo-) Objekt zurückgeben wird, kann der Pfad des neuen Verzeichnisses per FullName-Property an cd übergeben wird.

Allerdings ist die Schreibweise nicht gerade intuitiv. Vor allem, wenn man die PowerShell nur sporadisch verwendet.