LPIC101/103.2 Textströme mit Filtern verarbeiten: Unterschied zwischen den Versionen
(→tr) |
K (Textersetzung - „ “ durch „ “) |
||
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
==Einleitung== | ==Einleitung== | ||
Textströme und Textdateien mit Filtern verarbeiten | |||
==Begriffsklärung== | ==Begriffsklärung== | ||
Zeile 22: | Zeile 22: | ||
Beispiel : <code>cat /var/log/syslog</code> Gibt die komplette Syslog Datei auf dem Terminal aus | Beispiel : <code>cat /var/log/syslog</code> Gibt die komplette Syslog Datei auf dem Terminal aus | ||
===bzcat,xzcat und zcat=== | ===bzcat, xzcat und zcat=== | ||
Möchte man eine komprimierte Datei im Terminal ausgeben, kann man einen dieser drei Befehle verwenden. Der Befehl verhält sich ansonsten ähnlich wie cat. Dabei verwendet bzcat das Kompressionsprogrammm bzip2, xzcat das Programm xz (beide Verlinken lediglich auf das Programm). zcat ist eine eigenständiges Programm und wird in der Regel für die gleichen Programme wie gzip verwendet. | Möchte man eine komprimierte Datei im Terminal ausgeben, kann man einen dieser drei Befehle verwenden. Der Befehl verhält sich ansonsten ähnlich wie cat. Dabei verwendet bzcat das Kompressionsprogrammm bzip2, xzcat das Programm xz (beide Verlinken lediglich auf das Programm). zcat ist eine eigenständiges Programm und wird in der Regel für die gleichen Programme wie gzip verwendet. | ||
Zeile 88: | Zeile 88: | ||
===cut,paste=== | ===cut,paste=== | ||
Cut schneidet Spalten einer Textdatei aus. Es ist jedoch nicht mit dem Windows "Ausschneiden" zu verwechseln, da die Spalten in der Originaldatei bestehen bleiben. Zum erfolgreichen ausschneiden der Spalten benötigt man eine Angabe der Spalte (z.B. "-f2") und einen sogenannten Delimiter, welcher die Spalten voneinander trennt (z.B. "d:", also hier ein Doppelpunkt). | Cut schneidet Spalten einer Textdatei aus. Es ist jedoch nicht mit dem Windows "Ausschneiden" zu verwechseln, da die Spalten in der Originaldatei bestehen bleiben. Zum erfolgreichen ausschneiden der Spalten benötigt man eine Angabe der Spalte (z. B. "-f2") und einen sogenannten Delimiter, welcher die Spalten voneinander trennt (z. B. "d:", also hier ein Doppelpunkt). | ||
Der Befehl Paste fügt zwei oder mehr Dateien zusammen. Im Gegensatz zu cat werden diese horizontal zusammengefügt. | Der Befehl Paste fügt zwei oder mehr Dateien zusammen. Im Gegensatz zu cat werden diese horizontal zusammengefügt. | ||
Zeile 126: | Zeile 126: | ||
<div class="toccolours mw-collapsible mw-collapsed"> | <div class="toccolours mw-collapsible mw-collapsed"> | ||
Was ist ein Textstrom? | Was ist ein Textstrom? | ||
<div class="mw-collapsible-content">Datenübertragung | <div class="mw-collapsible-content"> | ||
Datenübertragung (Text oder Numerisch, binär usw.). In der UNIX Philosophie sollen alle Datenübertragungen idealerweise in Textform realisiert werden, sodass die Programme untereinander kompatibel sind. Die Datenübertragung mittels Textstrom wird i.d.R. durch eine Pipe veranlasst.</div> | |||
</div> | </div> | ||
Zeile 149: | Zeile 150: | ||
</div> | </div> | ||
[[ | [[Kategorie:Linux/LPIC/101]] | ||
Aktuelle Version vom 28. Mai 2023, 08:46 Uhr
Einleitung[Bearbeiten | Quelltext bearbeiten]
Textströme und Textdateien mit Filtern verarbeiten
Begriffsklärung[Bearbeiten | Quelltext bearbeiten]
Was ist ein Textstrom? Ein Textstrom ist eine Dateiübertragung in Textform.
Was ist der Unterschied zu einer Textdatei? Ein Textstrom liefert Daten an eine Textdatei.
Was ist ein Filter
Ein Filter ist ein Programm, welches die Ausgabe eines Befehls als Eingabe verwertet. Es wird in Linux mit einer sogenannten Pipe gekennzeichnet. So schaut eine Pipe in der Kommandozeile aus : |
. Eine Pipe signalisiert einen Textstrom.
Relevante Filter[Bearbeiten | Quelltext bearbeiten]
Die folgenden Filter sind relevant. Sie werden sehr kompakt mit jeweils einem Beispiel dargestellt.
cat[Bearbeiten | Quelltext bearbeiten]
Eines der Standardbefehle bei der Arbeit in dem Linux-Terminal. Von der Namensbedeutung her ist der Befehl ursprünglich dazu gedacht, Dateien vertikal zusammenzufügen (concatenate, verketten). In der Praxis wird er aber oft verwendet um den Inhalt einer Datei komplett auszugeben auf dem Terminal.
Beispiel : cat /var/log/syslog
Gibt die komplette Syslog Datei auf dem Terminal aus
bzcat, xzcat und zcat[Bearbeiten | Quelltext bearbeiten]
Möchte man eine komprimierte Datei im Terminal ausgeben, kann man einen dieser drei Befehle verwenden. Der Befehl verhält sich ansonsten ähnlich wie cat. Dabei verwendet bzcat das Kompressionsprogrammm bzip2, xzcat das Programm xz (beide Verlinken lediglich auf das Programm). zcat ist eine eigenständiges Programm und wird in der Regel für die gleichen Programme wie gzip verwendet.
Zusatzinfo
bzip2 - Dieser Algorithmus ist leistungsfähiger als gzip und wird gerne für große Datenmengen verwendet.
Beispiel: bzcat gepackteDatei.bz
Leitet den Inhalt der Datei in die Standardausgabe.
head[Bearbeiten | Quelltext bearbeiten]
Dieser Befehl zeigt die ersten (Standardmäßig 10) Zeilen einer Textdatei.
Beispiel: head /var/log/syslog
Zeigt die ersten zehn Zeilen der Systemlog Datei.
tail[Bearbeiten | Quelltext bearbeiten]
Dieser Befehl zeigt die letzten (Standardmäßig 10) Zeilen einer Textdatei.
Beispiel: tail /var/log/syslog
Zeigt die letzten zehn Zeilen der Systemlog Datei.
less[Bearbeiten | Quelltext bearbeiten]
Dieser Befehl zeigt eine Textdatei Seitenweise. Man kann – im Gegensatz zum veralteten Befehl "more" – vor- und zurücknavigieren.
Beispiel: less Textdatei.txt
Zeigt die Dateiinhalte Seitenweise.
nl[Bearbeiten | Quelltext bearbeiten]
Dieser Befehl setzt vor die Zeilen einer Textdatei eine Nummer zur besseren Ablesbarkeit.
Beispiel: nl Textdatei.txt > nummerierte_Textdatei.txt
Nummeriert die Zeilen der Datei und gibt sie in einer neuen Datei aus. Die Anzeige der Änderungen kann anschließend mit cat erfolgen.
wc[Bearbeiten | Quelltext bearbeiten]
Dieser Befehl zählt die Wörter einer Textdatei.
Beispiel: wc *
Zeigt die Wortzahl aller Dateien im aktuellen Pfad.
hexdump[Bearbeiten | Quelltext bearbeiten]
Wandelt die Ausgabe einer Datei in Hexadezimal-, Oktal-, Dezimalzahlen oder ASCII Zeichen um. Es kann nahezu alles als Eingabe verwendet werden, auch Binärdateien. Die Voreinstellung ist Hexadezimal.
Beispiel: hexdump Textdatei.txt
Zeigt die Dateiinhalte im Hexadezimalformat.
od[Bearbeiten | Quelltext bearbeiten]
Erledigt das gleiche wie hexdump. Einige Distributionen arbeiten mit hexdump, andere mit od und wieder andere mit beiden. Die Voreinstellung ist Oktal. Od hat verglichen mit hexdump etwas weniger Funktionen.
Beispiel: od Textdatei.txt
Zeigt die Dateiinhalte im Oktalformat.
sort[Bearbeiten | Quelltext bearbeiten]
Sortiert die Zeilen von Text- und anderen Dateien.
Beispiel
sort -n textfile1
Sortiert die Textdatei in numerischer Reihenfolge (-n).
history | sort -n
Sortiert die History in numerischer Reihenfolge (-n).
history | sort
Sortiert die History in alphabetischer Reihenfolge (-n).
uniq[Bearbeiten | Quelltext bearbeiten]
Zeigt nur die einzigartigen Zeilen einer Datei. Funktioniert nur nach sort
Beispiel :
sort textfile.txt | uniq
Sortiert die Datei und gibt nur einzigartige Zeilen aus.
split[Bearbeiten | Quelltext bearbeiten]
Spaltet Dateien in mehrere. Die Angaben sind Standardmäßig Zeilenbasiert, können aber auch Dateigrößenorientiert sein (split -b). Standardangabe ist ein Split nach 1000 Zeilen.
Beispiel :
split -b 11m grosses-paket grosses-paket-split
Teilt die Quelldatei "grosses-paket" in mehrere 11MB große Teilpakete "grosses-paket-split". Die Ausgabe erzeugt mehrere Dateien, welche in folgender Logik an den Dateinamen angehängt werden "grosses-paket-splitaa","grosses-paket-splitab" usw..
cut,paste[Bearbeiten | Quelltext bearbeiten]
Cut schneidet Spalten einer Textdatei aus. Es ist jedoch nicht mit dem Windows "Ausschneiden" zu verwechseln, da die Spalten in der Originaldatei bestehen bleiben. Zum erfolgreichen ausschneiden der Spalten benötigt man eine Angabe der Spalte (z. B. "-f2") und einen sogenannten Delimiter, welcher die Spalten voneinander trennt (z. B. "d:", also hier ein Doppelpunkt). Der Befehl Paste fügt zwei oder mehr Dateien zusammen. Im Gegensatz zu cat werden diese horizontal zusammengefügt.
Beispiel : In der Datei /etc/passwd stehen die Benutzernamen in der ersten Spalte. Diese Datei enthält jedoch auch weitere Informationen:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
Der folgende Befehl führt dazu, dass nur die Benutzernamen ausgegeben werden:
cut -d: -f1 /etc/passwd
root
daemon
bin
…
sed[Bearbeiten | Quelltext bearbeiten]
Der sed Editor gehört nicht in dieses Kapitel und wird nur der Vollständigkeit halber erwähnt.
tr[Bearbeiten | Quelltext bearbeiten]
Der Befehl tr steht für translate und ist am besten durch die Funktion "Suchen und Ersetzen" aus Excel zu vergleichen. Es werden bestimmte Zeichen oder Wörter einer Datei durch andere ersetzt.
Beispiel:
cat textfile1 | tr n x
Ersetzt alle Buchstaben "n" mit dem Buchstaben "x"
md5sum,sha256sum,sha512sum[Bearbeiten | Quelltext bearbeiten]
Die drei genannten Befehle arbeiten alle nach derselben Syntax und haben den gleichen Zweck. Sie erstellen Prüfsummen für die jeweilige Datei, welche wiederum wichtig für Datenintegrität,-sicherheit und -authentizität sind. Es lassen sich mit den jeweiligen Befehlen auch die entsprechenden Hashwerte auslesen.
Beispiel:
sha512sum textfile.txt > SHA512SUMS
Erstellt einen Secure Hash Algorithm 2 (SHA) mit 64-Bit Schlüsselwörtern (512).
Kontrollfragen[Bearbeiten | Quelltext bearbeiten]
Was ist ein Textstrom?
Was passiert bei folgender Befehlszeile : cat > textdatei.txt
Was passiert bei folgender Befehlszeile : cat < textdatei.txt | uniq
Wie kann man die Dateien in einem Verzeichnis nach Dateigröße sortieren?
Was passiert bei folgender Befehlszeile : dd if=/dev/sda bs=512 count=1|od -h --endian=big | nl