Visualisierung | |
Software | RegExp |
ls | Wenn
man "ls" eintippt (und Zeilenschaltung) wird eine Liste der Dateien im
Verzeichnis, in dem man sich gerade befindet, erzeugt. Es gibt eine Vielzahl von Optionen, die man als Argumente mitgeben kann. Wenn man z.B. "ls -l" tippt, also die Option "-l" angibt, erhält man eine vollständigere Liste der Dateien mit Angaben zum letzten Änderungsdatum, der Dateigrösse etc. |
cd | "change
directory", Befehl um das Verzeichnis zu wechseln. Wenn man vorher mit
"ls" gesehen hat, dass es im aktuellen Verzeichnis einen Ordner namens
"daten" gibt, gibt man einfach "cd daten" ein. Sofort ist das Terminal
wieder bereit und zeigt den aktuellen Ort, den sog. aktuellen Pfad (path), an, also "~/daten". Das bedeutet: Man befindet sich im Home-Verzeichnis und dort im Verzeichnis "daten". Um eine Ebene zurück zu kommen, also von "daten" wieder ins Home-Verzeichnis, gibt man "cd .." ein. Die beiden Punkte bedeuten: eine Hierarchiestufe zurück. |
pwd | Zeigt das aktuelle Verzeichnis an. |
mkdir | "make
directory": Erstellt ein neues Verzeichnis im aktuellen Verzeichnis.
Natürlich muss zusätzlich noch ein Name angegeben werden. Also z.B.
"mkdir meinedaten". |
rmdir | "remove directory": Löscht ein (leeres) Verzeichnis wieder. Also z.B. "rmdir meinedaten". |
man | "manual":
Die Hilfe! Sie hilft immer weiter. Tippt man "man" und anschliessend
einen Befehl, wird die Hilfe dazu angezeigt. Also z.B. "man ls" zeigt
alle möglichen Optionen, mit man mit "ls" verwenden kann. In der Hilfe
blättert man mit der Leerzeichentaste oder den Pfeilen. Man beendet
sie, indem man "q" drückt. |
sort | Sortiert
die Zeilen einer Textdatei ruckzuck alphabetisch oder auch anders.
Grundlegende Anwendung: "sort dateiname". Die Datei wird dann sortiert
direkt am Bildschirm ausgegeben. Möchte man stattdessen eine neue Datei
erzeugen, die den sortierten Inhalt enthält, gibt man ein: "sort
dateiname > neuerdateiname". Die vielfältigen Optionen sind über
"man" ersichtlich. |
cat | Fügt mehrere
Dateien zusammen. "cat datei1 datei2 datei3" gibt auf dem Bildschirm
alle drei Dateien aus. Möchte man wieder eine neue Datei erstellen, in
der alle drei zusammengefügt sind, tippt man wieder "cat datei1 datei2
datei3 > neuedatei". |
grep | Findet
sog. Reguläre Ausdrücke, also Suchmuster, in einer Datei. Reguläre
Ausdrücke bilden eine mächtige Suchsprache, um bestimmte Suchmuster zu
finden. "grep '.*terror.*' textdatei" findet in der Datei "textdatei" alle Vorkommen von "Terror", auch wenn vorher oder nachher noch Zeichen stehen. Weitere Informationen zu den regulären Ausdrücken sind hier verfügbar. |
uniq | Zeigt
alle Zeilen an, die mehr als einmal genau gleich vorkommen. Die Zeilen
müssen aber vorher sortiert sein; man sollte die Datei also voher mit
"sort" sortieren. "uniq -d testdatei" gibt eine Liste aus von Zeilen, die in Testdatei mehr als einmal vorkommen. Das Argument "-d" bedeutet, dass wirklich nur mehrfach vorkommende Zeilen angezeigt werden. "uniq -c testdatei" zählt wiederum mehrfach vorkommende Zeilen und schreibt vor die Zeilen aber gerade noch hin, wie oft die Zeilen vorkommen. Wieder kann hier mit ">" angegeben werden, dass man das Resultat nicht als Liste im Terminal, sondern als Datei ausgegeben haben möchte. |
wc | "word count": Zählt Zeilen, Wörter und Buchstaben in einer Datei. "wc testdatei": Erstellt eine Liste mit den Anzahl Zeilen, Wörtern und Buchstaben in "testdatei". |
> | Wir
haben es oben bereits kennengelernt: Das Zeichen bedeutet, dass die
Ausgabe in eine Datei geschrieben werden soll. Man kann also bei jedem
Befehl zusätzlich dieses Zeichen und ein Dateinamen anhängen, worauf
die Ausgabe, die ansonsten im Terminal landen würde, in die angegebene
Datei geschrieben wird. Übrigens: Diese Datei muss natürlich nicht zuerst erzeugt werden; wenn sie noch nicht existiert, wird sie einfach automatisch erzeugt. Aber achtung: Wenn bereits eine Datei dieses Namens besteht, wird sie einfach überschrieben! |
| | "pipe": Mit der Pipe, der Röhre, können mehrere Befehle miteinander verhängt werden. Ein Beispiel: "sort -d meinedatei | uniq -c > datei2": Hier wird zunächst der Befehl "sort" mit dem Argument "-d" auf die Datei "meinedatei" angewandt. Statt das Ergebnis aber einfach auszugeben, wird es gleich an den Befehl "uniq" weitergeleitet. Und der manipuliert dann mit dem Argument "-c" die Ausgabe von "sort", zählt also das mehrfache Vorkommen der Zeilen, und schreibt das Ergebnis in eine Datei "datei2". Natürlich kann man das obige Beispiel auch in zwei Schritten machen, aber es kann natürlich ganz elegant sein, das so zu verknüpfen. |
Aus einer Textdatei Wortlisten erstellen:tr ' ' '\012' < infile > outfile"tr" ersetzt Zeichen. Hier werden in einem ersten Schritt alle Leerzeichen durch Zeilenschaltungen (umschrieben mit \012) ersetzt. Dann wird die Interpunktion ebenfalls durch Zeilenschaltungen ersetzt und mehrere Leerzeichen gelöscht. Am Schluss haben wir eine Wortliste "wl". Es gibt hier teilweise Schwierigkeiten mit Umlauten oder mit dem Wunsch, Zeichen nicht einfach nur zu ersetzen, sondern zu ergänzen (z.B. die Interpunktion von den Wörtern zu trennen). Unter Mac OS X ist es deshalb oft einfacher, mit einem Texteditor wie BBEdit zu arbeiten und dort eine Wortliste mit Hilfe der Grep-Suche mit Regular Expressions zu machen. |
Sortieren und zählen:sort -d wl | uniq -c > outfileDie Kombination von sort und uniq ermöglicht das Zählen von Wörtervorkommen, wenn pro Zeile ein Wort steht (wie das mit dem oben vorgestellten Befehlskonstrukt machbar ist). Hier wird also zuerst eine Datei alphabetisch sortiert. Dann mit "uniq" werden die gleichen Zeilen gezählt. Anschliessend kann man natürlich mit "sort -dr infile > outfile" die Datei nach Wortfrequenzen (absteigend) sortieren. |
N-Gramme erstellen:tail +2 wl > nextwords paste wl nextwords > bigrams...etc. Hier eine elegante Methode, um N-Gramme, also Wortgruppen, aus 2 oder mehr Wörtern bestehend, zu berechnen. Mit "tail" werden neue Dateien erstellt, denen die erste, bzw. die ersten zwei Zeilen fehlen. Mit "paste" werden jeweils die Originaldatei mit den anderen Dateien zusammengefügt, so dass man auf jeder Zeile jeweils die zwei oder drei aufeinanderfolgenden Wörter hat. Jetzt haben wir Dateien "bigrams" und "trigrams", die alle möglichen Kombinationen von Wörtern enthalten. Jetzt kann man mit "sort" und "uniq", wie oben beschrieben, sortieren und Frequenzen der Wortgruppen zählen. |
Dateien je nach Inhalt in ein anderes Verzeichnis legen: Mit "grep" ist es ja möglich, die Inhalte von Dateien zu durchsuchen (siehe weiter oben). Dieser Befehl kann nun mit anderen Befehlen zur Manipulation von Dateien kombiniert werden. Das ist z.B. nützlich, wenn man ein Verzeichnis mit vielen Dateien hat, wobei man einen Teil der Dateien, in deren Inhalt ein bestimmtes Suchmuster vorkommt, in ein anderes Verzeichnis verschieben möchte. Das ist sinnvoll, wenn man beispielsweise aus einem Korpus ein Teilkorpus bilden möchte, das Dateien mit einem bestimmten Inhalt umfassen soll. Nehmen wir an, wir haben ein Verzeichnis mit Dateien, z.B. Zeitungsartikel, die auf .xml enden. Darin gibt es einen Tag, in dem der Rubrikenname erscheint. Wir wollen nun aus unserem Korpus alle Artikel zusammenfassen, die in der Rubrik "Sport" erschienen sind. So geht das: grep -l "<section>Sport</section>" Quellverzeichnis/*.xml | xargs -J % mv % Zielverzeichnis/Mit "grep" wird die Suche ausgeführt (das Argument "-l" bewirkt, dass nur die Dateienamen ausgegeben werden, in denen es einen Treffer gab) und mit der Pipe (|) an den Move-Befehl ("mv") weitergereicht. Weil es sich um sehr viele Dateien handeln kann, was zu einer zu langen Argumente-Kette für "mv" führen kann, wird aber vorher "xargs" vorgeschaltet, das lange Argumente-Ketten in kleinere Portionen aufteilt. |
Texte konvertieren und zusammenfügen mit textutil (mit Mac OS X): Seit der Version 10.4 von Mac OS X gibt es ein tolles Programm "textutil", mit dem man einfach Texte konvertieren und zusammenfügen kann. Man kann damit folgende Textformate je ineinander konvertieren: txt, html, rtf, rtfd, doc, wordml, webarchive Am einfachsten lässt sich eine Datei so in ein anderes Format konvertieren: textutil -convert doc inputdatei outputdatei Damit wird die Inputdatei in das doc-Format konvertiert. Statt "doc" kann an der entsprechenden Stelle auch eines der oben erwähnten Formate genannt werden. Man kann aber mit dem Argument -cat mehrere Dateien gleichzeitig konvertieren und in eine einzige Datei zusammenfügen. Das funktioniert z.B. so: textutil -cat txt -output outputdatei.txt daten/*.html Damit werden alle Dateien, die sich im Verzeichnis "daten" befinden und die Endung ".html" haben, ins Format txt konvertiert und in eine Datei namens "outputdatei.txt" zusammengefügt. Weitere Hilfe kann mit "man textutil" aufgerufen werden. |
Software | RegExp |
Visualisierung |