Linux Terminal Hilfe zur Aufgabe?
Hallo zusammen,
ich habe folgende Aufgabe zu lösen:
Es existieren in einem Verzeichnis zwei Dateien mit dem namen "Dienstlich" und "Privat".
Der Inhalt von der Datei "Privat":
Hansi Peters
Petra Mallek
Dieter Baumann
Franzi Emmers
Michi Baum
Manja Sibell
Der Inhalt von der Datei "Dienstlich":
Frau Meier 2301
Herr Adam 1012
Dieter Baumann
Herr Klement 8013
Frau Senf 1067
Frau Emmers
Dieter Baumann
Nun gibt es folgende Aufgabe:
Wenn Sie im Verzeichnis für diese Übung
cat -n Privat Dienstlich | sort -k 2 | uniq
aufrufen, erhalten Sie eine Auflistung, die durcheinander nummeriert und nach Vorname sortiert ist, sowie den Eintrag für Dieter Baumann doppelt enthält. Ändern Sie den Aufruf, so dass die Liste aufsteigend nummeriert und nach Vorname sortiert ist, sowie den Eintrag für Dieter Baumann nur einmal enthält. (5 P)
Kann mir wer sagen was ich machen muss damit ich das so hinbekomme?
1 Antwort
Ich weiß nicht, ob es die eleganteste und kürzeste Lösung ist, aber es kommt auch auf die Reihenfolge an.
cat Privat Dienstlich | sort -k 1 | uniq | cat -n
Warum so oft cat?
Ganz einfach: cat -n Privat Dienstlich gibt für jede Datei die Zeilennummer separat aus. also 1,2,3,4,1,2,3,4,5. Lösung hierfür wäre das Pipen in ein weiteres cat um daraus "eine" Ausgabe zu machen
Punkt 2 ist: Wenn du uniq nach dem cat -n machst, dann nimmst du die Zeilennummern ja mit in den uniq Vergleich. Und das möchtest du nicht, weil die Zeile mit Dieter Bauman dann eben nicht mehr gleich sind.
Also du cat'test erstmal die Dateien und dann sortierst du sie. Hier nimmst du k=1 weil du nach Vornamen sortieren willst.
Das ganze jagst du dann durch uniq. Und erst DANN lässt du dir davon die Zeilennummern ausgeben.
Warum so oft cat?
Du könntest das erste cat weglassen:
sort Privat Dienstlich | uniq | cat -n
uniq könnte man auch von sort erledigen lassen:
sort -u Privat Dienstlich | cat -n