PowerShell 7 biedt krachtige tools voor het zoeken naar tekst in bestanden. Een van de meest gebruikte cmdlets hiervoor is bijvoorbeeld Select-String
. Dit is de tegenhanger van de grep
-opdracht in Linux en helpt bij het filteren van specifieke patronen binnen tekstbestanden. In deze handleiding leer je hoe je Select-String
effectief gebruikt binnen Visual Studio Code. Het gaat hier dan om filter technieken met Select-String.
De Select-String cmdlet laat je nieuwe mogelijkheden verkennen: je kunt deze gebruiken om een invoertekenreeks of de inhoud van een bestand te doorzoeken op een specifieke waarde. Deze cmdlet zoekt naar tekst of tekstpatronen binnen de doelgegevens en geeft de overeenkomende inhoud terug. Het werkt regel voor regel en filtert alle regels uit die de opgegeven tekenreeks niet bevatten, terwijl het de regels retourneert die dat wel doen. Dit is dus een van de andere filter technieken met behulp van Select-String.
Bovendien kun je met de cmdlet aangeven dat juist de niet-overeenkomende regels worden teruggegeven in plaats van de overeenkomende regels. Je kunt zelfs testen of er overeenkomsten bestaan zonder de daadwerkelijke gegevens terug te krijgen.
Testbestand maken
Voordat we beginnen, maken we een eenvoudig testbestand aan in PowerShell:
@"
PowerShell is krachtig.
PowerShell werkt op meerdere platformen.
Select-String helpt bij tekstanalyse.
Deze regel bevat het woord script.
"@ | Set-Content .\testbestand.txt
Begin filter technieken met Select-String
Basisgebruik
De eenvoudigste manier om Select-String
te gebruiken, is door een zoekterm en een bestand op te geven:
Select-String -Path .\testbestand.txt -Pattern "PowerShell"
Dit commando zoekt naar het woord “PowerShell” in het bestand testbestand.txt
en geeft de overeenkomende regels terug.
Zoeken met regex
Je kunt Select-String
ook gebruiken met reguliere expressies:
Select-String -Path .\testbestand.txt -Pattern "P.*l"
Dit zoekt naar woorden die met “P” beginnen en eindigen op “l”, zoals “PowerShell”.
Meerdere patronen zoeken
Je kunt meerdere patronen tegelijkertijd doorzoeken door een array van patronen op te geven:
Select-String -Path .\testbestand.txt -Pattern "PowerShell", "script"
Dit toont alle regels waarin “PowerShell” of “script” voorkomt.
Werken met objecten
Select-String
retourneert objecten met gedetailleerde informatie. Je kunt bijvoorbeeld alleen de tekst weergeven zonder bestandsinformatie:
(Select-String -Path .\testbestand.txt -Pattern "PowerShell").Line
Een andere belangrijke parameter die de Select-String cmdlet ondersteunt, is -Quiet en -CaseSensitive. De eerste parameter zorgt ervoor dat de cmdlet alleen de waarde True retourneert als ten minste één regel de opgegeven waarde bevat. De tweede parameter -CaseSensitive zorgt ervoor dat er hoofdlettergevoelig gezocht wordt.
Selecct-String -Path .\testbestand.txt 'PowerShell' `-Quiet
-CaseSensitive
Zoals je ziet, hoef je alleen de -Quiet parameter toe te voegen. Nu zal het commando alleen de waarde True teruggeven, zolang er minstens één overeenkomst is. Let op: het retourneert slechts één keer True, zelfs als meerdere regels de opgegeven waarde bevatten.
Toegegeven, het ontvangen van alleen True geeft je niet veel informatie, maar je weet in ieder geval dat je op de juiste plek zoekt.
De -Quiet parameter kan handig zijn als je commando veel regels zou retourneren. Hoewel dat in deze voorbeelden niet het geval is, zou dat wel zo zijn als je het commando als volgt zou aanpassen:
Select-String -Path .\testbestand.txt 'PowerShell' 'PowerShell' -Quiet -NotMatch
Merk op dat de parameter -CaseSensitive is vervangen door -NotMatch, wat de logica van de opdracht omkeert. Hierdoor worden alle regels die de waarde Error Output niet bevatten, teruggegeven. In dit geval zouden dat veel regels zijn. Met andere woorden, bijna elke regel in elk bestand zou worden teruggegeven, behalve die ene regel in dat ene bestand waarvan je weet dat het de opgegeven waarde bevat.
Conclusie filter technieken met Select-String
Select-String
is een veelzijdige en krachtige cmdlet voor tekstanalyse in PowerShell 7. Door het in Visual Studio Code te gebruiken, krijg je een efficiënte workflow voor het doorzoeken van bestanden en logbestanden.
Meer informatie over PowerShell vind je hier. Meer informatie over de auteur van deze blog post vind je hier.