Grundlagen von Linux und der Kommandozeile

$ cat ips.txt
10.0.0.5
10.0.0.9
10.0.0.9
10.0.0.5
10.0.0.2
10.0.0.5
$ sort ips.txt | uniq -c | sort -nr | head -n 1

In den Auswahlmöglichkeiten sind die Leerzeichen am Zeilenanfang weggelassen. Welche Zeile gibt die letzte Pipeline in der obigen Sitzung aus?

  1. A1 10.0.0.2
  2. B2 10.0.0.9
  3. C3 10.0.0.5
Antwort und Erläuterung anzeigen

Antwort: C. 3 10.0.0.5

sort ordnet die Zeilen so, dass gleiche Zeilen nebeneinanderstehen, und uniq -c fasst benachbarte gleiche Zeilen zu einer zusammen und stellt die Anzahl voran; das ergibt die drei Zeilen 3 10.0.0.5, 2 10.0.0.9 und 1 10.0.0.2. sort -nr sortiert absteigend nach der führenden Zahl, und head -n 1 nimmt die erste Zeile, also lautet die Ausgabe 3 10.0.0.5. uniq fasst nur „benachbarte“ gleiche Zeilen zusammen, daher ist das vorherige Sortieren unverzichtbar. Solche Auswertungen, bei denen Befehle mit Pipes verkettet werden, sind ein Standardverfahren, um in einem Log die IP-Adressen mit den meisten Zugriffen oder die häufigsten Fehler zu zählen.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen von Linux und der Kommandozeile

  1. Zeilen, die später an die Server-Logdatei /var/log/app.log angehängt werden, sollen fortlaufend auf dem Bildschirm erscheinen, sobald sie hinzukommen. Welcher Befehl ist geeignet?
  2. Welche Ausgabe erzeugt der obige Befehl, der Spalten aus einer kommagetrennten Zeile herausschneidet?
  3. Welche Ausgabe erzeugt der obige sed-Befehl, der Zeichen ersetzt?
  4. Was gibt das letzte awk in der obigen Sitzung aus?
  5. Welche Beschreibung der Dateien, die GNU find mit „find /data -name "*.log" -mtime +7 -size +100M“ findet, ist richtig?