Programm das bestimmte Wörter in einem Text zählt?

SoIid  10.03.2023, 13:48

Ist dieser Text auch in einer Excel Tabelle?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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

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
Chaostisi55 
Fragesteller
 10.03.2023, 19:18

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

0
Chaostisi55 
Fragesteller
 07.09.2023, 20:09

Hey ich habe jetzt ein Win 11 könnte es darin liegen das es nicht mehr funktioniert

0
Erzesel  08.09.2023, 06:18
@Chaostisi55

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.

0

Finden, wird glaube ich schwer ... Aber schreiben ... Da gibt es offizielle Dokumentationen für und das in verschiedenen Programmiersprachen