Programm das bestimmte Wörter in einem Text zählt?
Ich würde gerne ein Programm finden oder schreiben was bestimmte Wörter in einem Text sucht und sie in einen Excel Tabelle einfügt.
Könnt ihr mir da weiterhelfen?
Ist dieser Text auch in einer Excel Tabelle?
Nein
2 Antworten
Das Finden und Zählen von vorgegebenen Worten in einem Text/Textdatei ist geradzu banal für Powershell.
Test.txt
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.
demo.ps1
#lies Text aus einer Datei als ganzen String ein... (Zeilenumbrüche werden als Teil des Strings angesehen)
$Text = Get-Content 'test.txt' -Raw
#Suchbegriffe (jeweils ganze Wörter) "et" oder "magna" oder "dolor"
$SuchPattern = '\bet\b|\bmagna\b|\bdolor\b'
($Text|Select-String -Pattern $SuchPattern -AllMatches).Matches | #finde die in $SuchPattern definierten Begriffe
Group-Object Value | #fasse gefundene Beriffe zu Gruppen zusammen
ForEach-Object {
#erzeuge für jede Gruppe ein Objekt mit den Propeties Wort und Anzahl
[PSCustomObject]@{
Wort = $_.Name
Anzahl = $_.Count
}
}|
Format-Table
pause
das Direkte erzeugen eines Exel-Worksheet dürfte nicht nur in Powershell "Pain in the Ass" sein. https://maliyaablog.wordpress.com/2017/10/02/how-to-createwrite-and-save-excel-using-powershell/
Der einfachste Weg dürfte der Export als CSV-Datei sein.
Eine CSV Datei in Exel zu importieren ist gemessen am Aufwand für das direkte erzeugen billig: https://www.pc-magazin.de/ratgeber/excel-csv-dateien-importieren-microsoft-office-3202344.html
Das sähe dann folgendermaßen aus (ich habe obigen funktionalen Scriptteil , zu einem Kurzscript zusammen gefasst und ersetze Format-Table lediglich durch das Export-CSV Cmtlet)
demo.ps1
$SuchPattern = '\bet\b|\bmagna\b|\bdolor\b'
(gc 'test.txt' -Raw|Select-String $SuchPattern -a).Matches|group Value|%{[PSCustomObject]@{Wort=$_.Name;Anzahl=$_.Count}}|
Export-Csv -Path 'Wortzahl.csv' -Delimiter ';' -NoTypeInformation #exportiere die Objekte in eine CSV-Datei für Exel (Exel verwendet Semikolon als StandardDelimiter)
pause
Die Datei Wortzahl.csv einfach in Exel importieren...
Es gibt sicher irgendwelch Programme von der Stange, welche ähnlich Funktionalität haben. Für mich ist dergleichen jedoch irrelevant. solch ein PowershellScript ist schneller geschrieben, als nach irgendwelchen Programmen zu suchen
- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/export-csv?view=powershell-5.1
- https://learn.microsoft.com/de-de/powershell/scripting/learn/deep-dives/everything-about-pscustomobject?view=powershell-5.1
- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string?view=powershell-5.1
Anmerkung zum RegEx für den/die Suchbegriff(e)
- \b ist die Begrenzung eines ganzen Wortes
- | bedeutet: oder und trennt mehrere alternative Suchbegriffe
$SuchPattern aufgelöst:
- \b Wortgrenze
- et das Suchwort
- \b Wortgrenze
- | oder
- \b Wortgrenze
- magna das Suchwort
- \b Wortgrenze
- | oder
- \b Wortgrenze
- et das Suchwort
- \b Wortgrenze
Dankeschön das hat mir sehr geholfen. Eine Frage hätte ich noch. Wie könnte ich in einer vorhandenen Excel Datei die Anzahl in z.B A1, A2 und A3 einfügen
Das boardeigene Powershell ist das gleiche (5.1.0) , wie unter Win 10. Daran kanns nicht liegen.
Funktioniert nicht mehr, ist eine ziemlich vage Fehlerbeschreibung .
Seitens Powershell dürfte sich abgesehen davon, dass die Sicherheitsrichtlinien bezüglich der Scriptausführung verstärkt wurden nichts verändert. (gelegentliche Abfrage zur Änderung der ExecutionPolicys). Das betrifft jedoch win 10 & 11.
Das hat jedoch keinen funktionalen Einfluss.
Was Änderungen seitens des Import der CSV in Exel angeht, kann ich keine Angaben machen. Exel ist nicht mein Ding.
Finden, wird glaube ich schwer ... Aber schreiben ... Da gibt es offizielle Dokumentationen für und das in verschiedenen Programmiersprachen
Hey ich habe jetzt ein Win 11 könnte es darin liegen das es nicht mehr funktioniert