2.5.3 Text- und Dateibearbeitung

Übersicht über die Befehle auf dieser Seite (in fett bedeutet prüfungsrelevant):

Befehl Beispiel Beschreibung
nano nano datei.txt Öffnet die Datei datei.txt im Nano-Texteditor
joe joe datei.txt Öffnet die Datei datei.txt im Joe-Texteditor
touch touch datei.txt Erstellt eine leere Datei datei.txt
cat cat datei.txt Zeigt den Inhalt der Datei datei.txt
more more datei.txt Zeigt den Inhalt der Datei datei.txt seitenweise
head head datei.txt Zeigt die ersten 10 Zeilen der Datei datei.txt an
tail tail datei.txt Zeigt die letzten 10 Zeilen der Datei datei.txt an
wc wc -l datei.txt Zählt die Zeilen in datei.txt (-l steht für "line")
cut cut -d':' -f1 /etc/passwd Zeigt das erste Feld jeder Zeile in der Datei /etc/passwd (genaue Beschreibung s.u.).
paste paste datei1.txt datei2.txt Verbindet Zeilen von Dateien
awk awk '{print $1}' datei.txt Druckt das erste Feld jeder Zeile aus datei.txt
sed sed 's/alt/neu/g' datei.txt Ersetzt alle Vorkommen von "alt" durch "neu" in datei.txt
diff diff datei1.txt datei2.txt Vergleicht zwei Dateien und zeigt die Unterschiede an
sort sort datei.txt Sortiert die Zeilen der Datei datei.txt
uniq uniq datei.txt Entfernt doppelte Zeilen in datei.txt

Erklärung zu cut -d':' -f1 /etc/passwd
cut schneidet Felder zeilenweise aus einer Datei aus. Hier die Erklärung der Parameter

  • -d gibt das Trennzeichen an (hier ':'). In der Datei /etc/passwd wird der ":" als Trennzeichen genutzt.
  • -f gibt das Feld an (hier 1). Es wird also je Zeile das erste Trennzeichen gesucht und das Feld davor ausgegeben.

Die Programme "nano" und "joe"

Um Textdateien direkt auf dem Server zu bearbeiten, können wir auf verschiedene Texteditoren zurückgreifen. Zwei beliebte Programme sind nano und joe. Beide Programme müssen eventuell zuerst installiert werden, was wir mit dem Befehl sudo apt-get install nano bzw. mit sudo apt-get install joe durchführen können. Sie können sich aussuchen, welchen der beiden Editoren sie verwenden möchten.

Der Befehl nano datei.txt öffnet die Datei datei.txt im Nano-Texteditor. Nano ist ein einfacher Texteditor, der für die Bearbeitung von Textdateien direkt im Terminal verwendet wird.

Der Befehl joe datei.txt öffnet die Datei datei.txt im Joe-Texteditor. Joe ist ein weiterer Terminal-basierter Texteditor, der für seine Ähnlichkeit zu alten WordStar-Texteditoren bekannt ist.

Aufgabe

  • Installieren Sie nano oder joe.
  • Öffnen Sie eine Datei namens beispiel.txt im Texteditor Ihrer Wahl und fügen Sie etwas Text hinzu.

Befehle "touch", "cat" und "more"

Der Befehl touch wird verwendet, um eine neue, leere Datei zu erstellen oder die Zugriffs- und Änderungszeit einer bestehenden Datei zu aktualisieren.

Der Befehl cat zeigt den Inhalt einer Datei an.

Der Befehl more zeigt den Inhalt einer Datei seitenweise an, sodass der Benutzer durch den Inhalt blättern kann.

Beispiele

  • touch datei.txt: Erstellt eine neue, leere Datei namens datei.txt.
  • cat datei.txt: Zeigt den Inhalt der Datei datei.txt.
  • more datei.txt: Zeigt den Inhalt der Datei datei.txt seitenweise an.

Aufgabe

  • Erstellen Sie eine neue Datei namens uebung.txt mit dem Befehl touch.
  • Fügen Sie etwas Text zu uebung.txt hinzu und zeigen Sie den Inhalt der Datei mit cat und mit more an.

Den Unterschied zwischen cat und more werden wir erst bei längeren Dateien bemerken. Empfehlung: verwenden Sie einfach immer more, dann passt das schon.

Befehle "head" und "tail"

Der Befehl head zeigt die ersten Zeilen einer Datei an. Dies ist besonders nützlich, wenn man schnell einen Überblick über den Anfang einer Datei erhalten möchte, wie zum Beispiel bei Konfigurationsdateien.

Der Befehl tail zeigt die letzten Zeilen einer Datei an. Dies ist besonders hilfreich, um die neuesten Einträge in einer Datei zu sehen, wie bei ehr langen Logdateien, um die aktuellsten Log-Ereignisse anzusehen.

Beispiel - head datei.txt: Zeigt die ersten 10 Zeilen der Datei datei.txt an. - head -n 30 /var/log/syslog: Zeigt die ersten 30 Zeilen der Logdatei /var/log/syslog an. - tail datei.txt: Zeigt die letzten 10 Zeilen der Datei datei.txt an. - tail -n 30 /var/log/syslog: Zeigt die letzten 30 Zeilen der Logdatei /var/log/syslog an.

Aufgabe

  • Schauen Sie unter /var/log, welche Logdateien auf dem Server vorhanden sind.
  • Verwenden Sie head -n 30, um die ersten 30 Zeilen einer Logdatei anzuzeigen.
  • Verwenden Sie tail -n 30, um die letzten 30 Zeilen einer Logdatei anzuzeigen.

Befehl "wc"

Der Befehl wc (Word Count) wird verwendet, um die Anzahl der Zeilen, Wörter und Bytes in einer Datei zu zählen. Es gibt mehrere nützliche Argumente, die man mit dem Befehl wc verwenden kann.

  • -l: Zählt die Zeilen in einer Datei.
  • -w: Zählt die Wörter in einer Datei.
  • -c: Zählt die Bytes in einer Datei.
  • -m: Zählt die Zeichen in einer Datei.
  • -L: Gibt die Länge der längsten Zeile in einer Datei aus.

Beispiele - wc -l datei.txt: Zählt die Zeilen in datei.txt. - wc -L datei.txt: Gibt die Länge der längsten Zeile in datei.txt aus.

Aufgabe

  • Zählen Sie die Anzahl der Zeilen, Wörter, Bytes und Zeichen in einer Textdatei mit dem Befehl wc.

Befehle "cut" und "paste"

Der Befehl cut schneidet Teile jeder Zeile aus einer Datei heraus und zeigt sie an.

Der Befehl paste verbindet Zeilen von Dateien.

Beispiel - cut -d':' -f1 /etc/passwd: Schneidet das erste Feld jeder Zeile in der Datei /etc/passwd aus und zeigt es an. - paste datei1.txt datei2.txt: Verbindet die Zeilen von datei1.txt und datei2.txt zeilenweise.

Aufgabe

  • Schneiden Sie das erste Feld jeder Zeile in der Datei /etc/passwd aus und zeigen Sie es an.
  • Verbinden Sie die Zeilen von zwei Textdateien und zeigen Sie das Ergebnis an.

Befehle "awk", "sed", "diff", "sort" und "uniq"

Hier sind wir im Bereich der Nerd-Befehle: mächtig und etwas verrückt. Wenn man wirklich mit einem Linux-System arbeite, dann sind diese Befehle sehr hilfreich.

Der Befehl awk ist ein mächtiges Werkzeug zur Mustererkennung und Verarbeitung von Textdateien. Der Befehl sed ist ein Stream-Editor zur Bearbeitung von Textdateien. Der Befehl diff vergleicht zwei Dateien und zeigt die Unterschiede an. Der Befehl sort sortiert die Zeilen einer Datei. Der Befehl uniq entfernt doppelte Zeilen in einer Datei.

Beispiel - awk '{print $1}' datei.txt: Druckt das erste Feld jeder Zeile aus datei.txt. - sed 's/alt/neu/g' datei.txt: Ersetzt alle Vorkommen von "alt" durch "neu" in datei.txt. - diff datei1.txt datei2.txt: Vergleicht datei1.txt und datei2.txt und zeigt die Unterschiede an. - sort datei.txt: Sortiert die Zeilen der Datei datei.txt. - uniq datei.txt: Entfernt doppelte Zeilen in datei.txt.

Natürlich gibt es für all diese Befehle noch verschiedene Argumente, auf die wir hier aber nicht weiter eingehen. Und es gibt noch etliche weitere "Werkzeuge" auf diesem Niveau, die für Experten ein Linux-System effizient und mächtig machen.

Aufgabe

  • Vergleichen Sie zwei Textdateien und zeigen Sie die Unterschiede mit diff an.
  • Sortieren Sie die Zeilen einer Textdatei mit sort.
  • Entfernen Sie doppelte Zeilen in einer Textdatei mit uniq.

"Spiel" als Übung

Diese "Spiel" hilft Ihnen, die bisher gelernten Befehle zu festigen. Folgen Sie den Anweisungen und führen Sie die angegebenen Befehle der Reihe nach aus.

Text für die Aufgabe

1 Die Kathedrale und der Basar

Linux ist subversiv. Wer hätte auch vor nur fünf Jahren (1991) gedacht, dass sich ein Betriebssystem der Spitzenklasse wie durch Zauberei materialisieren könnte, geschaffen von Tausenden über den ganzen Planeten verstreuten Nebenerwerbs-Hackern, die durch die eng verwobenen Stränge des Internets verbunden sind?

Ich sicher nicht. Zu dem Zeitpunkt, als Linux 1993 auf meinem Radarschirm auftauchte, hatte ich bereits zehn Jahre in der Unix- und Open Source-Entwicklung verbracht. Mitte der Achtziger war ich einer der ersten Beitragenden zu GNU. Ich hatte bereits umfangreiche Open Source-Software im Internet veröffentlicht, die ich selbst entwickelt oder mitentwickelt hatte (en nethack, Emacs VC (Version Control) und GUD modes, xlife und andere) und die heute noch viel verwendet wird. Ich dachte, ich wüsste, wie es gemacht wird.

Dann stellte Linux alles in Frage, was ich zu wissen glaubte. Ich hatte das Unix-Evangelium der kleinen Tools, des rapid prototyping und der inkrementellen Verbesserung seit der ersten Stunde verbreitet. Ich glaubte aber auch, dass es eine bestimmte kritische Komplexitätsstufe gebe, ab der ein zentralisierterer Ansatz mit sehr genauer Vorausplanung erforderlich wird. Ich glaubte, dass die wichtigste Software (Betriebssysteme und wirklich umfangreiche Tools wie Emacs) so gebaut werden müssten wie Kathedralen, sorgsam gemeißelt von einzelnen Druiden oder kleinen Teams von Hohepriestern, die in totaler Abgeschiedenheit wirkten und keine unfertigen Beta-Freigaben veröffentlichen dürften.

Linus Torvalds Entwicklungsstil auf der anderen Seite - mit seinen frühen und häufigen Freigaben, seinem Delegieren von allem, was nur irgendwie möglich ist, und der an Promiskuität grenzenden Offenheit - war eine echte Überraschung. Es handelte sich nicht gerade um eine stille und ehrfurchtsvolle Tätigkeit, wie der Bau einer Kathedrale eine ist -- stattdessen schien die Linux-Gemeinde ein großer, wild durcheinander plappernder Basar von verschiedenen Zielsetzungen und Ansätzen zu sein (alles sehr treffend durch die Linux-Archivsites repräsentiert, die Beiträge von jedem nehmen), der ein kohärentes und stabiles System wohl nur durch eine Reihe von Wundern hervorbringen konnte.
(aus Die Kathedrale und der Basar - Abschnitt 1: https://sehnbruch.ddns.net/selflinux/html/html/die_kathedrale_und_der_basar01.html)

  1. Erstellen Sie ein Unterverzeichnis spiel und führen Sie die Schritte in dem Unterverzeichnis aus.
  2. Erstellen Sie eine Datei namens spiel.txt und fügen Sie den o.g. Text hinzu.
  3. Zeigen Sie den Inhalt der Datei spiel.txt mit cat an.
  4. Kopieren Sie die Datei spiel.txt nach spiel_kopie.txt.
  5. Zeigen Sie den Inhalt der Datei spiel_kopie.txt mit more an.
  6. Zeigen Sie die ersten 2 Zeilen der Datei spiel_kopie.txt mit head an.
  7. Zählen Sie die Zeilen, Wörter und Zeichen in der Datei spiel_kopie.txt mit wc.
  8. Schneiden Sie das erste Wort jeder Zeile in der Datei spiel_kopie.txt mit cut aus und speichern Sie das Ergebnis in ergebnis.txt.
  9. Verbinden Sie die Datei ergebnis.txt mit spiel.txt und speichern Sie das Ergebnis in verbunden.txt.
  10. Öffnen Sie die Datei verbunden.txt im Texteditor Ihrer Wahl (nano oder joe) und fügen Sie eine neue Zeile hinzu.
  11. Zeigen Sie den Inhalt der Datei verbunden.txt mit cat an.

Hinweise:

  • Führen Sie die oben genannten Schritte aus.
  • Kontrollieren Sie öfters mit ls -l, was passiert ist.
  • Wie viele Zeilen hat am Ende die Datei verbunden.txt?