D
doncapo
Grünschnabel
Hallo, wie bei einem anderen Problem in einem anderen Thread bereits gesagt, sitze ich momentan einer Uni-Hausaufgabe. Hierbei sollen die Häufigkeiten des Auftretens kleiner Buchstaben gezählt werden. Mein bisheriges Problem habe ich in den Griff bekommen, jedoch stehe ich nun vor dem nächsten: Wenn ich die vorgesetzte Datei über Argument in das Skript gebe, bekomme ich die Fehlermeldung "Word too long!". Anderen Foren konnte ich entnehmen, dass wohl die Variable in die der Text geladen wird nicht so viele Zeichen aufnehmen könnte. Wenn ja, wie kann ich es trotzdem bewerkstelligen, das mein Skript läuft?
Vielen Dank im Voraus und hier das Skript:
Vielen Dank im Voraus und hier das Skript:
Code:
#! /bin/csh
# Usage: source count $arg1
# Defintionen
set text = `cat $argv[1] | sed 's/[!;?;,;.;:;";";" ";\n;\t]*//g'`
set text = `echo $text | tr ' ' ',' | sed 's/,//g'`
set textUmfang = `echo $text | wc -c`
@ textUmfang = $textUmfang - 1
set gezBuchst = 0
set chars = (a b c d e f g h i j k l m n o p q r s t u v w x y z)
set bigChars = (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
set lettersC
set letters
set allrels
@ j = 1
# Großbuchstaben in Kleinbuchstaben umwandeln
foreach i ($bigChars[*])
set text = `echo $text | tr -t $i $chars[$j]`
@ j++
end
echo $text
@ j = 1
# Berechnung der Haeufigkeiten
echo Haeufigkeiten
foreach i ($chars[*])
set buchstabenAnz = `echo $text | tr -d $i | wc -c`
@ buchstabenAnz = $textUmfang - ($buchstabenAnz - 1)
if ($buchstabenAnz != 0) then
echo "$i\t$buchstabenAnz"
@ gezBuchst = $gezBuchst + $buchstabenAnz
set letters = ($letters $i)
set lettersC = ($lettersC $buchstabenAnz)
endif
end
echo "Gezaehlte Kleinbuchstaben insgesamt:$gezBuchst"
# Berechnung der relativen Haeufigkeiten
echo Relative Haeufigkeiten
foreach i ($letters[*])
@ relC = ($lettersC[$j] * 100) / $gezBuchst
echo "$i\t$relC %"
@ allrels = $allrels + $relC
@ j++
end
echo "Checkup: $allrels %"