Archiv verlassen und diese Seite im Standarddesign anzeigen : bestimmte Wörter in Datei zählen
Hallo!
Ich möchte in einem Text-File nach bestimmten Wörtern suchen und anschließend die Anzahl der Wörter ausgeben.
Ich denke mal es müßte eine Kombi aus wc und grep sein (via pipe), oder? Grep sucht nach dem Wort, gibt mir aber die ganze Zeile aus, in der das Wort gefunden wird. Wenn es mir nur z.B. WORT WORT WORT ausgeben würde, könnte ich es ja dann mit wc zählen lassen.
Hat jemand eine Idee dazu?
Danke
bartleby
Die Manpage von grep zeigt mir einen Parameter -c. Tut das nicht?
Der Gestreifte
28.01.04, 11:21
Ich hatte das mal mit meinen rudimetären perl-Kenntissen gemacht:
#!/usr/bin/perl -w
# nach welchem Ausdruck suchen wir?
$MUSTER = "";
$COUNT = 0; #eh klar, der zaehler
print 'Welcher String? ';
chomp($MUSTER = <STDIN>);
while (<>) {
while (/$MUSTER/g) {
$COUNT++;
}
}
print "'$MUSTER' $COUNT mal gefunden.\n"; Ausführbar machen und mit "perlskript.pl textdatei.txt" aufrufen.
Die Manpage von grep zeigt mir einen Parameter -c. Tut das nicht? Im Grunde schon. Wenn der String in einer Zeile jedoch zwei mal vorkommt, wird dennoch nur eine Zeile gezählt.
Im Grunde schon. Wenn der String in einer Zeile jedoch zwei mal vorkommt, wird dennoch nur eine Zeile gezählt.
Den Schalter hatte ich auch schon entdeckt, aber genau das ist das Problem!
Das Perl-Script macht genau das was ich suche, aber es muß doch auch ohne perl gehen, oder? Ich brauche es für eine Belegarbeit und ich glaub der Prof. will kein Perl sehen...
Dann nimm doch eine x-beliebige andere Programmiersprache, wenn der Prof. einfach nur was gegen Perl hat...
Der Gestreifte
28.01.04, 12:09
Will er möglicherweise "awk" sehen?
Dann nimm doch eine x-beliebige andere Programmiersprache, wenn der Prof. einfach nur was gegen Perl hat...
Ich glaube nicht, dass er direkt was gegen Perl hat, ich bin nur grad in einem Aufgabenblock, wo es um Pipes, wc, grep u.ä. geht. Deswegen muß es auch damit gehen.
geist_der_foren
28.01.04, 13:46
Gibt es schon eine lösung ??? Würde mich auch mal interessiren :D
Shadowblade
28.01.04, 13:53
cat test | grep new | tr [:space:] \\n | grep new | wc -l
sieht zwar hässlich aus, funktioniert aber soweit.
es werden aber auch substrings gezählt. mit 'grep ^new$' im 2. grep ist das nicht mehr der fall.
Windoofsklicker
28.01.04, 15:35
# cat datei | grep wort | wc -l
gibt aus, wie oft das wort in der datei gefunden wurde, oder nicht?
nur wenn alle wörter einzeln untereinanderstehen würde das gehen.
tr '[:space:]' '\n' < datei | grep -c <wort>
tr ersetzt alle <space> durch LF, dadurch entsteht eine liste mit einem wort pro zeile die dann mittels grep durchsucht werden kann.
ich seh grade, shadowblade hat das mit tr bereits gepostet.
-j
warum so kompliziert...;)
grep -o suchwort test.txt | wc -w
grep -o zeigt nur die gefunden Wörter, auch mehrere in einer Zeile
wc -w zählt diese dann
grep -r -o fuc....k /usr/share/doc/* | wc -w
39 Treffer, tztztztztz:D
Der Gestreifte
28.01.04, 17:48
grep -r -o fuc....k /usr/share/doc/* | wc -w
39 Treffer, tztztztztz Du hast es gut...
addin@captin:maddin$ rgrep -o fuc....k /usr/share/doc/* | wc -w
grep: Ungültige Option -- »o«
Aufruf: grep [OPTION]... MUSTER [DATEI]...
»grep --help« gibt Ihnen mehr Informationen.
0
maddin@captin:maddin$ grep --version
grep (GNU grep) 2.4.2
Copyright 1988, 1992-1999, 2000 Free Software Foundation, Inc. Oder hast Du XXX-Versionen unter /usr/share/doc liegen? ;o)
cat datei | grep -oc wort
Geht zumindest bei einem Wort pro Suchdurchlauf :)
grep -o suchwort test.txt | wc -w
Das ist genau das, was ich gesucht habe. Warum bin ich da eigentlich nicht selber drauf gekommen :confused:
Sei's draum, VIELEN DANK an alle!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.