opteronfx Geschrieben 22. Dezember 2010 Teilen Geschrieben 22. Dezember 2010 Hallo Leute, ich bin neu hier, hoffentlich bin ich im richtigen tread. Ich habe in der Uni eine Aufgabe zum Shellskripting bekommen. Schreiben Sie eine Shellprozedur, die die Anzahl der worte von allen Dateien in einem Verzeichnis in entsprechender Weise ausgibt z.B. in der Form: "die Anzahl der Worte un Datei dateiname ist ###" So ich habe diese Aufgabe mit einer for-Schleife gelöst. Mit while-Schleife komme ich leider nicht weit. Hier mal die Lösung mit der for-Schleife: #! /bin/bash #Aufgabe 1 - Uebungsblatt 6 #set x gesamtzahl=0 for datei in *.txt do anzahl=`less $datei | wc -w` echo -e "Die Anzahl der Worte in Datei $datei ist $anzahl" gesamtzahl=`expr $anzahl + $gesamtzahl` echo -e "bis jetzt wurden $gesamtzahl Wörter gezählt" done Danke für eure Bemühungen. Gruß, Vitaly. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
lupo49 Geschrieben 22. Dezember 2010 Teilen Geschrieben 22. Dezember 2010 (bearbeitet) Und wie sieht dein Ansatz mit einer while-Schleife aus? $ ls *.txt | while read file do echo $file done Bearbeitet 22. Dezember 2010 von lupo49 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
opteronfx Geschrieben 23. Dezember 2010 Autor Teilen Geschrieben 23. Dezember 2010 Hallo, danke für schnelle antwort. Also mein Ansatz war anders: files=`dir *.txt | wc -w` # anzahl der dateien ermitteln helpVar=`find *.txt` while [ $files -gt 0 ] do ----------------- files=$(($files-1)) done aber ich kam einfach nicht auf das innere der while schleife. Ich bedanke mich noch mal. Frohe Weihnachten. MfG, Vitaly. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 23. Dezember 2010 Teilen Geschrieben 23. Dezember 2010 Das geht viel kürzer: find . -name '*.txt' -type f -print0 | xargs -0 cat | wc -w Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
gg0815 Geschrieben 23. Dezember 2010 Teilen Geschrieben 23. Dezember 2010 for str in $(printf "%s_%s\n" $(wc -w *.txt));do if [[ ${str#*_} == insgesamt ]];then printf "die Anzahl der Wörter insgesamt ist %s\n" ${str%%_*};else printf "die Anzahl der Wörter in Datei %s ist\t%i\n" ${str#*_} ${str%%_*};fi;done vieleicht noch nen bisschen die Formatierung aufhuebschen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.