Få mængden af ord, tegn og linjer i en fil ved hjælp af PowerShell
Nogle gange er det nyttigt at indsamle nogle statistikker om en tekstfil, du har. Hvis du bruger en moderne teksteditor som Notepad++ eller Geany, har den sandsynligvis nok værktøjer til alle mulige tilfælde. Men hvis du er i et barebone Windows-miljø, så kan PowerShell hjælpe dig. Her er et hurtigt tip til, hvordan du bruger det effektivt til at beregne antallet af ord, tegn og linjer i en fil.
PowerShell er en avanceret form for kommandoprompt. Det er udvidet med et enormt sæt af klar-til-brug cmdlets og kommer med evnen til at bruge .NET framework/C# i forskellige scenarier. Hvis du har evnen til at skrive scripts, kan du oprette nogle meget kraftfulde til at automatisere Windows. For nylig Microsoft gjort det tilgængeligt til Linux og OS X.
PowerShell kommer med en nyttig indbygget cmdlet Mål-objekt. Den beregner egenskabsværdierne for visse typer objekter. Measure-Object udfører tre typer målinger, afhængigt af parametrene i kommandoen. Cmdlet'en kan tælle objekter og beregne minimum, maksimum, sum og gennemsnit af de numeriske værdier. For tekstobjekter kan den tælle og beregne antallet af linjer, ord og tegn. Det er præcis, hvad vi har brug for.
Alt du behøver er at videregive filindholdet til input. Til det formål kan du kombinere Measure-Object med den anden cmdlet Hent-indhold. Get-Content-cmdlet'en udskriver indholdet af tekstfilen.
Så til vores opgave kan vi gøre følgende.
- Åbn PowerShell
- Indtast eller indsæt følgende kommando:
Get-Content "F:\usb skrivebeskyttelse (draft).txt" | måle -Linje -Karakter -Ord
Ret filstidelen til den fil, du skal måle. I mit tilfælde viser det følgende output for min tidligere artikel tekst:
- Brug følgende kommando til at tælle de samme ekskluderende mellemrum:
Get-Content "F:\usb skrivebeskyttelse (draft).txt" | måle -Linje -Tegn -Ord -IgnorerHvidrum
Det er det. Dette trick kan være nyttigt, når du har brug for at få statistikken over filindhold, men ikke kan få en passende tredjepartsapp til denne opgave.