Moet weten hoe u PowerShell kunt gebruiken om een tekstbestand te lezen en tekst te vervangen? Dit is wat we de PowerShell Read-Text File noemen.
Zoek niet verder! Deze blogpost is voor jou. Tegen het einde van de post laat ik je een functie zien die ik heb gebouwd om je leven veel gemakkelijker te maken.
Het vervangen van tekst in een bestand met PowerShell is een proces van drie stappen.
- Het bestand lezen
- De string vinden en vervangen
- De wijzigingen naar het bestand schrijven.
Het bestand lezen
U moet eerst het bestand lezen. Laten we eerst een bestand maken met behulp van de Set-Content
cmdlet zodat we er een hebben om mee te werken.
Om dit bestand te lezen, kunt u de Get-Content
opdracht gebruiken. U kunt het bestand lezen door een tekstbestandspad op te geven aan de Path
parameter zoals hieronder weergegeven.
De string vinden en vervangen
Nu we de inhoud van het bestand in het geheugen hebben als een string, moeten we de string zoeken en vervangen. Een manier om dat te doen is door de -replace
operator te gebruiken. Deze PowerShell operator zoekt een string en vervangt deze door een andere.
Met behulp van de voorbeeldbestandsinhoud kunnen we de zoekstring foo vervangen door de vervangende string bar, wat de bestandsinhoud nu foo foo baz zou maken.
Schrijven naar het bestand
Nu we de nieuwe bestandsinhoud opgeslagen hebben in $newContent
, kunnen we deze nieuwe inhoud nu terug schrijven naar het bestand. Een manier om dat te doen is door gebruik te maken van het Set-Content
commando.
Het Set-Content
commando vervangt alle inhoud van een bestand door een nieuwe waarde toe te kennen.
Wanneer je nu het bestand C:\file.txt leest met Get-Content
, zul je zien dat het nu de nieuwe inhoud bevat.
Omgaan met Open Bestandshandles
De stappen die je eerder hebt doorlopen werken… meestal. Echter, je zult in de echte wereld merken dat het niet altijd zo uitpakt.
Je zult af en toe te maken krijgen met bestanden die open zijn in PowerShell zelf. Dit voorkomt dat je de nieuwe inhoud terug kunt schrijven naar het bestand.
Om deze situatie met een open bestandshandle op te lossen, heb ik een eenvoudige workflow gemaakt die je in staat stelt eerst een tijdelijk tekstbestand op schijf aan te maken met de nieuwe inhoud, het oorspronkelijke bestand te verwijderen en vervolgens het tijdelijke bestand te hernoemen.
Hier is een voorbeeld van hoe het werkt:
Hieronder staat een voorbeeld van een functie die ik heb gebouwd genaamd Find-InTextFile
die deze aanpak gebruikt in combinatie met de mogelijkheid om tekst in een bestand te vinden (niet te vervangen).
Deze functie maakt ook gebruik van de krachtigere syntaxis van reguliere expressies om strings te vinden. Je zult merken dat reguliere expressies je in staat stellen om flexibeler te zoeken met behulp van speciale karakters zoals enkele aanhalingstekens, speciale karakters en meer.
Je kunt ook hieronder zien dat ik een foreach-lus gebruik om meerdere bestanden tegelijk te verwerken. Dit is handig als je een heleboel bestanden moet verwerken.
Resources
Voor meer informatie over het Set-Content
-commando kun je kijken naar Set-Content: De PowerShell-manier om naar een bestand te schrijven of een alternatieve manier om inhoud naar een bestand te schrijven, het Out-File
-commando.
Source:
https://adamtheautomator.com/powershell-read-text-file/