1 Übung: Inhalt von 2 Dateien in einer Datei tabellenförmig zusammenfassen - mkappus1/DatenmanagementMTHS24 GitHub Wiki
Übung: Inhalt von 2 Dateien in einer Datei tabellenförmig zusammenfassen
Die Dateien Wortliste-de.txt und Wortliste.en.txt enthalten je eine Wortliste in den Sprachen Deutsch und Englisch. Die Wortlisten umfassen jeweils 20 Zeilen und manche Begriffe kommen mehrfach vor.
Ihre Aufgabe ist es, aus diesen Wortlisten eine zweisprachige Wortliste in einem tabellen-artigen Format (Tabulator getrennt) in der Sprachrichtung Deutsch --> Englisch) zu erstellen.
Hund --> dog
Katze --> cat
Maus --> mouse
Dabei soll die Liste alphabetisch nach den deutschen Begriffe sortiert werden, es sollen Duplikate entfernt werden und optional soll die Liste am Schluss in eine zufällige Reihenfolge gemischt werden. Dazu benötigen Sie die UNIX Befehle, paste
, sort
uniq
und shuf
, die Sie sinnvoll verketten sollten.
Ihre Das Ergebnis sollte so aussehen - die Reihenfolge der Begriffe kann abweichen, wenn zufällig gemischt wurde:
Abzugeben sind die fertige Datei, sowie ein Screenshot des Terminals, der die durchgeführten Schritte zeigt (gerne auch mit Fehlversuchen). Im folgenden finden Sie Erläuterungen zu den benötigten Befehlen. Die gleiche Vorgehensweise kann dann für die Vorbereitung grösserer Korpora verwendet werden, wie im Abschnitt Grundlegende Korpusvorbereitung mit Unix Befehlen besprochen.
paste
?
Was macht der Befehl Der Befehl paste
in Unix wird verwendet, um die Zeilen von zwei oder mehr Dateien zeilenweise zu verbinden. Er fügt die Inhalte der Dateien nebeneinander, getrennt durch ein Tabulatorzeichen (Standardtrennzeichen), zusammen.
Die grundlegende Syntax des paste
Befehls lautet:
paste [Optionen] [Datei1] [Datei2] ...
- Optionen: Zusätzliche Parameter, die das Verhalten des Befehls beeinflussen.
- Datei1, Datei2, ...: Die Dateien, deren Zeilen zeilenweise zusammengeführt werden sollen.
Verwenden eines anderen Trennzeichens:
Sie können ein anderes Trennzeichen als das Standard-Tabulatorzeichen verwenden. Zum Beispiel, um ein Komma als Trennzeichen zu verwenden, nutzt man die Option -d
:
paste -d ',' datei1.txt datei2.txt
Dies gibt die Zeilen von datei1.txt
und datei2.txt
nebeneinander, getrennt durch Kommas, aus.
Zusammenfügen mehrerer Dateien:
Sie können auch mehr als zwei Dateien zusammenfügen. Zum Beispiel:
paste datei1.txt datei2.txt datei3.txt
Dies gibt die Zeilen von datei1.txt
, datei2.txt
und datei3.txt
nebeneinander, getrennt durch Tabulatoren, aus.
Der paste
Befehl ist sehr nützlich, um die Inhalte mehrerer Dateien zeilenweise nebeneinander anzuordnen. Standardmässig verwendet er Tabulatoren als Trennzeichen, aber man kann auch andere Trennzeichen verwenden. Dies ist besonders praktisch, wenn Sie Daten aus verschiedenen Dateien zusammenfügen und vergleichen oder in ein anderes Format überführen möchten.
sort
?
Was macht der Befehl Der Befehl sort
in UNIX wird verwendet, um die Zeilen einer Textdatei oder die Eingaben von der Standardausgabe zu sortieren. Hier sind die Hauptfunktionen und Anwendungsfälle des sort
Befehls:
sort [Optionen] [Datei]
Datei: Die Datei, deren Zeilen sortiert werden sollen. Wenn keine Datei angegeben wird, liest sort
von der Standardeingabe.
Grundlegende Verwendung
Die grundlegende Syntax des sort
Befehls lautet:
sort [Optionen] [Datei]
Datei: Die Datei, deren Zeilen sortiert werden sollen. Wenn keine Datei angegeben wird, liest sort
von der Standardeingabe.
Beispiel
Angenommen, Sie haben eine Datei unsorted.txt
mit folgendem Inhalt:
Banane
Apfel
Dattel
Apfel
Erdbeere
Wenn Sie den Befehl sort unsorted.txt
ausführen, erhalten Sie:
Apfel
Apfel
Banane
Dattel
Erdbeere
Numerische Sortierung: Sortiere numerische Werte anstelle von Zeichenfolgen.
sort -n datei.txt
Rückwärts sortieren: Sortiere in absteigender Reihenfolge.
sort -r datei.txt
Sortieren nach einer bestimmten Spalte: Sortiere nach einer bestimmten Spalte in einer Datei.
sort -k 2 datei.txt
Einzigartige Zeilen: Sortiere und entferne doppelte Zeilen.
sort -u datei.txt
(siehe auch Befehl uniq
gleich hier unten)
uniq
?
Was macht der Befhle Der UNIX Befehl uniq
wird verwendet, um doppelte aufeinanderfolgende Zeilen in einer Datei oder einer Eingabe zu entfernen. Der Befehl kann auch verwendet werden, um nur doppelte oder nur eindeutige Zeilen anzuzeigen. Es ist wichtig zu beachten, dass uniq
nur aufeinanderfolgende doppelte Zeilen entfernt oder bearbeitet, daher wird er oft zusammen mit dem Befehl sort
verwendet, um die Daten zuerst zu sortieren und so alle doppelten Zeilen nebeneinander zu platzieren.
uniq [Optionen] [Eingabedatei] [Ausgabedatei]
-
Optionen: Zusätzliche Parameter, die das Verhalten des Befehls beeinflussen.
-
Eingabedatei: Die Datei, deren Zeilen überprüft und bearbeitet werden sollen.
-
Ausgabedatei: Optional, die Datei, in die die Ergebnisse geschrieben werden sollen. Wenn keine Ausgabedatei angegeben wird, werden die Ergebnisse auf der Standardausgabe (normalerweise der Bildschirm) angezeigt.
-
Zeilen zählen: Um die Anzahl der Vorkommen jeder Zeile anzuzeigen, verwendest du die Option
-c
-
Nur doppelte Zeilen anzeigen: Um nur die doppelten Zeilen anzuzeigen, verwendest du die Option
-d
-
Nur eindeutige Zeilen anzeigen: Um nur die eindeutigen Zeilen (die nur einmal vorkommen) anzuzeigen, verwendest du die Option `-u
Häufige Kombinationen
Da uniq
nur aufeinanderfolgende doppelte Zeilen entfernt, wird er häufig zusammen mit sort
verwendet, um die Daten zuerst zu sortieren:
sort file.txt | uniq
Zusammenfassung
Der uniq
Befehl ist ein nützliches Werkzeug zur Verarbeitung von Textdateien, um doppelte aufeinanderfolgende Zeilen zu entfernen oder zu bearbeiten. Mit verschiedenen Optionen kann er doppelte Zeilen zählen, nur doppelte oder nur eindeutige Zeilen anzeigen. Er arbeitet am besten, wenn die Eingabedatei zuerst sortiert wird, um alle doppelten Zeilen nebeneinander zu platzieren.
shuf
?
Und was macht der Befehl Der Befehl shuf
in UNIX wird verwendet, um die Zeilen einer Datei oder einer Liste von Eingaben zufällig zu mischen. Es ist ein nützliches Werkzeug, um Daten in zufälliger Reihenfolge anzuzeigen oder zu verarbeiten.
shuf [Optionen] [Datei]
- Optionen: Zusätzliche Parameter, die das Verhalten des Befehls beeinflussen.
- Datei: Der Name der Datei, deren Zeilen gemischt werden sollen. Wenn keine Datei angegeben wird, liest
shuf
von der Standardeingabe (meistens die Tastatur oder eine vorherige Ausgabe eines anderen Befehls).
Beispiele
Einfaches Mischen einer Datei:
Wenn Sie eine Datei namens datei.txt
haben und deren Zeilen zufällig mischen möchten, können Sie folgenden Befehl verwenden:
shuf datei.txt
Dies gibt den Inhalt von datei.txt
in zufälliger Reihenfolge aus.
Erzeugen einer zufälligen Zahlenreihe:
Wenn Sie eine Liste von Zahlen zufällig anordnen möchten, können Sie shuf
mit der Option -i
verwenden, um einen Bereich anzugeben:
shuf -i 1-10
Dies gibt die Zahlen von 1 bis 10 in zufälliger Reihenfolge aus.
Anzahl der Ausgaben beschränken:
Um nur eine bestimmte Anzahl zufälliger Zeilen auszugeben, können Sie die Option -n
verwenden:
shuf -n 3 datei.txt
Dies gibt 3 zufällig ausgewählte Zeilen aus datei.txt
aus.
Zusammenfassung
Der shuf
Befehl ist sehr vielseitig und kann verwendet werden, um Zeilen in einer Datei zu mischen, eine Liste von Zahlen zufällig anzuordnen oder eine begrenzte Anzahl zufälliger Zeilen auszugeben. Er ist besonders nützlich für Aufgaben wie das Zufallssortieren von Daten oder das zufällige Auswählen von Elementen.
Mehrere Befehle zusammenfassen mit der pipe |
Im Prinzip könne die oben beschriebenen Schritte (Zusammenführen (paste), Sortieren sort), Duplikate löschen (uniq) und zufällig mischen (shuf) in einzelnen Schritten einzeln mit je einem neuen Befehl ausgeführt werden
paste Datei1.txt Datei2.txt > DateiTabelle.txt
sort DateiTabelle.txt > DateiTabellerSortiert.txt
uniq DateiTabelleSoriert.txt > DateiTabelleSortiertKeineDubletten.txt
shuf DateiTabelleSortiertKeineDubletten > DateiTabelleSortiertKeineDublettenZufall,txt
Dabei wird jedesmal die neu-entstandene Datei mit dem nächste Befehl weiterbearbeitet.
Das Zeichen
**>**
in UNIX-Befehlen wird als Ausgabenumleitung oder Output Redirection bezeichnet. Es wird verwendet, um die Ausgabe eines Befehls in eine Datei umzuleiten, anstatt sie auf dem Bildschirm anzuzeigen. Hier sind die Hauptpunkte zur Bedeutung und Verwendung von>
sort unsortierte_datei.txt > sortierte_datei.txt
Hier wird der Inhalt von
unsortierte_datei.txt
sortiert und das Ergebnis insortierte_datei.txt
geschrieben.
Es gibt aber auch die Möglichkeit, die Befehle zu verketten und in einer Befehlszeile alle Befehle nacheinander auszuführen. Und zwar mit der sogenannten pipe.__
Das | Zeichen in dem Befehl wird als "Pipe" bezeichnet und hat eine sehr wichtige Funktion in der UNIX- und Linux-Shell. Es leitet die Ausgabe eines Befehls als Eingabe an den nächsten Befehl weiter. Dies ermöglicht es, mehrere Befehle in einer Pipeline zu verketten, um komplexe Datenverarbeitungsaufgaben durchzuführen.
Beispiel:
*paste Datei1.txt Datei2.txt | sort
: bedutet dann
-
Die Ausgabe des Befehls
paste Datei1.txt Datei2.txt
(die die Zeilen der beiden Dateien nebeneinander kombiniert) wird als Eingabe für den Befehlsort
verwendet. -
Unser Befehl für die 4 Schritte oben sähe dann folgerndermassen aus
paste Datei1.txt Datei2.txt | sort | uniq | shuf > DateiTabelleSortiertKeineDublettenZufall.txt
Das Pipe-Symbol |
ist also ein leistungsfähiges Werkzeug in der Unix-Shell, das es ermöglicht, die Ausgabe eines Befehls direkt als Eingabe für den nächsten Befehl zu verwenden, ohne dass Zwischendateien benötigt werden.
Ihre fertige Datei können Sie hier auf Moodle abgeben.