Professor Dr. F. Schweiggert Abteilung Angewandte Informationsverarbeitung
Johannes MayerBlatt 6


[c]



Allg. Informatik für WiWi (WS 2000)


Abgabetermin: 7. Dezember 2000

1. Ist jemand da? (2 Punkte)

Sie sitzen so vor Ihrem Computer und überlegen sich, ob nicht einer Ihrer Bekannten auch gerade am Rechner sitzt. Zum Aufstehen und Herumschauen sind Sie aber zu müde - schließlich haben Sie gerade das letzte Übungsblatt bearbeitet. Also denken Sie mal scharf nach, ob das nicht auch ohne Anstrengung geht. Da fallen Ihnen das Kommando who, mit dem man herausfinden kann, wer alles an diesem Computer arbeitet, und das Kommando egrep ein und Sie tippen eine Kommandozeile ein, mit der Sie herausfinden, ob Ihr Freund mit dem Login joe auch gerade am Rechner sitzt. Was haben Sie eingetippt? (Hinweis: Verwenden Sie eine Pipeline.)

2. Wer hat heute Geburtstag? (9 Punkte)

Sie kennen sicher das Problem, dass Sie zwar die Geburtstage ihrer Freunde und Bekannten zwar irgendwo notiert haben und trotzdem immer wieder einen Geburtstag vergessen. Das ist wirklich ärgerlich! Weil Sie im Rahmen dieser Vorlesung mit dem vi arbeiten sollen, haben Sie als Übung die Geburtsdaten Ihrer Freunde in eine Datei geburtstag.db (im Verzeichnis /www/thales/ftp/pub/vorlesungen/ws00/prog/6) geschrieben. Jede Zeile dieser Datei ist wie folgt aufgebaut:

<Name>:<Geburtsdatum>
(Hinweis: Namen bestehen hier nur aus Buchstaben und Leerzeichen; Punkte und Doppelpunkte kommen in Namen nicht vor.)

(a)
Zunächst bemerken Sie, dass sie das Datum nach der Schreibweise [d]d.[m]m.[yy]yy (z.B. 7.07.77, 03.3.1978, etc.) in die Datei eingetragen haben und dass Tag und Monat nicht immer mit 2 Stellen bzw. Jahr nicht immer mit 4 Stellen eingetragen ist. Korrigieren Sie zunächst die Anzahl der Stellen von Tag und Monat auf 2 und von Jahr auf 4. Ändern Sie danach das Datumsformat in mm-dd-yyyy. Führen Sie die Änderungen mit dem vi unter Verwendung von regulären Ausdrücken durch. (4 Punkte)
(Erklärung: dd = Tag, mm = Monat und yyyy = Jahr; [x]x entspricht einer Angabe von ein oder zwei Stellen, xx von genau zwei Stellen etc.)
(b)
Vertauschen Sie nun die beiden Spalten der Tabelle, d.h. aus <Name>:<Geburtsdatum> wird <Geburtsdatum>:<Name>, sowohl mit dem vi unter Verwendung eines regulären Ausdrucks als auch auf der Kommandozeile (mittels sed). (2 Punkte)
(c)
Da Sie die Geburtstage aus Ihrer neuen Tabelle einfach ablesen möchten, sortieren sie die Tabelle aufsteigend mit dem Kommando sort. (1 Punkt)
(d)
Nun möchten Sie sich alle ,,Geburtstagskinder``, d.h. Personen, die heute Geburtstag haben, mit dem Kommando egrep aus der Datei geburtstag.db filtern. (Hinweis: Das Kommando date liefert Ihnen das aktuelle Datum.) (2 Punkte)

3. Nichts geht mehr! (5 Punkte)

Vielleicht waren Sie ja auch betroffen. Haben Sie vor zwei Wochen versucht sich bei turing einzuloggen und es hat nicht funktioniert? Tja, wie Murphy so will, haben zwei Studenten unabhängig voneinander an demselben Tag riesige Log-Dateien produziert und somit den gesamten (für die Homeverzeichnisse auf turing) verfügbaren Plattenplatz verbraucht. Aber wie soll man nun herausfinden, wo sehr viel Plattenplatz verbraucht wird? (Hinweis: Sie dürfen davon ausgehen, dass ganze Zahlen keine führenden Nullen besitzen.)

(a)
Filtern Sie zunächst mittels egrep aus der Standardeingabe alle ganzen Zahlen kleiner als 100 heraus. (1 Punkt)
(b)
Filtern Sie nun mittels egrep aus der Standardeingabe alle ganzen Zahlen größer als 13 heraus. (2 Punkte)
(c)
Mit der Kommandozeile du <Verzeichnis> kann man den Speicherverbrauch eines Verzeichnisses (samt Unterverzeichnissen) bestimmen. Ermitteln Sie durch eine Kommandozeile alle Unterverzeichnisse Ihres Homeverzeichnisses ~, die mindestens 1000 Kilobytes an Plattenplatz verbrauchen. Verwenden Sie zur Anzeige das Kommando less. (2 Punkte)
(Achtung: Geben sie bei du nur ein Verzeichnis, das Ihnen gehört, als Parameter an. Ansonsten behindern Sie evtl. den Rechnerbetrieb und riskieren die Sperrung Ihres Accounts!)

Viel Erfolg!



P.S.: Denken Sie daran, dass sie zu fast allen Kommandos via man <Kommando> eine Anleitung bekommen können.



Johannes Mayer, 2000-11-30