# Raetsel 1: Herunterladen der 4 Dateien namens "text" via wget # # wir sparen spaeter Tipparbeit und setzen eine Variable fuer die URL: URL="http://www.mathematik.uni-ulm.de/sai/ws07/udb/uebungen/04/schnitzeljagd" export URL # herunterladen mit Option -O: aufsammeln der 4 Dateien in einer Zieldatei wget -O raetsel1.txt $URL/{2,9,11,5}/text # Raetsel 2: Aufteilen der Datei: gerade Zeilen und ungerade Zeilen trennen, # dabei Kommentarzeilen entfernen # Entfernen der Kommentarzeilen funktioniert im grep mit der Option "-v": # damit werden nur diejenigen Zeilen ausgegeben, in denen der Suchbegriff # NICHT vorkommt - und dieser Suchbegriff ist hier ein "#" am Zeilenbeginn; # Damit wir den Ueberblick nicht verlieren, ist die Funktionalitaet des # Aufteilens der geraden / ungeraden Zeilen in einem separaten Skript namens # "raetsel2b.sh" untergebracht, das wir hier via Pipe mit Eingaben "fuettern". cat raetsel1.txt | grep -v "^#" | sh raetsel2b.sh # Raetsel 3a: Herunterladen der Dateien, deren (Pfad-)Namen in Grossbuchstaben # geschrieben sind. while read line; do echo $line wget -O dummy.txt $URL/`echo $line | tr [:upper:] [:lower:]` cat dummy.txt >> testamentFragment.txt done < ef.txt; rm dummy.txt # Raetsel 3b: Herunterladen der Dateien, deren Pfadnamen statt des Slashs ("/") # als Trennsymbol den Doppelpunkt verwenden function reorder(){ wget -O dummy.txt $URL/$2/$4/$3/$1 cat dummy.txt >> testamentFragment.txt } while read line; do myArgs=`echo $line | tr ":" " "` reorder $myArgs done < of.txt # Sortieren des Testaments sort -n testamentFragment.txt > testament_mitNummern.txt # Entfernen von Zeilennummern und Doppelpunkten sowie Kommentarzeilen cat testament_mitNummern.txt | tr -d "[:digit:]" | tr -d ":" | grep -v "^#" > testament.txt # Ausgabe aller 3*4*3 = 36 Moeglichkeiten, eine Kombination aus Musik, Katze # und Wein zu erzeugen echo {Mozart,Elvis,Heino}-{Miezi,Mausi,Katerchen,Kralle}-{Merlot,Carbernet,Zinfandel} # die Ausgabe des vorstehenden echo-Kommandos verwenden wir als Parameter # fuer ein Skript, das am "-" die Datensaetze aufteilt und dann (mit Hilfe # eines weiteren Skripts) die Testamente erzeugt ./makeTestament.sh `echo {Mozart,Elvis,Heino}-{Miezi,Mausi,Katerchen,Kralle}-{Merlot,Carbernet,Zinfandel}` # Wie viele Testamente sind erzeugt worden? ls -l testament*ps | wc -l # Loeschen der Postscript-Dateien ist trivial: rm testament*ps