Textdateien und Ausgabeströme durch Textfilter schicken, um die Ausgabe mit Standard-UNIX-Kommandos aus dem GNU-textutils-Paket zu verändern
Alles Befehle manipulieren nur die Ausgabe auf stdout, aber nicht die Datei selbst. Will man eine permanente Änderung herbeiführen, muss die Ausgabe in eine neue Datei umgeleitet werden! Verwendet man die ursprüngliche Datei, wird diese geleert!!
- cat
Textdateien auf Bildschirm ausgeben oder in ein Programm umzuleiten. cat (concatenate/ verketten) war ursprünglich dazu gedacht, mehrere Dateien zu einer Datei zu verbinden. Es ist auch z.B. möglich nicht druckbare Zeichen mit auszugeben, was interessant sein kann, um zum Beispiel herauszufinden, ob Tabs oder Leerzeichen als Abstandshalter verwendet wurden. Siehe Beispiel unten. - cut
(schneiden) Spalten einer Datei "ausschneiden", wobei die Spalten innerhalb der Datei erhalten bleiben. Ausgabe nach stdout. cut muss bei Aufruf mitgeteilt werden, welches Zeichen als Trennungszeichen verwendet wird (Delimiter). Ausgabe kann ebenfalls in eine Datei erfolgen, es empfiehlt sich jedoch vorher eine Ausgabe über stdout vorzunehmen, um das Ergebnis zu kontrollieren. Siehe auch Beispiel unten. - expand Umwandlung von Tabstopps in Leerzeichen. Konvertierung nach stdout, weshalb es sinnvoll ist, die Ausgabe in eine Datei umzuleiten (siehe auch 103.4). expand geht von 8 Zeichen für einen Tabstopp aus, dieser Wert kann jedoch über die Option -t geändert werden
archangel:/textfiles # expand textfile1.txt > expandedtextfile1.txt - unexpand Leerzeichen in Tabstopps umwandeln. Auch hier kann über die Option -t der Standartwert von 8 Leerzeichen für einen Tabstopp geändert werden
- fmt einfaches Textformatierungsprogramm. Es entfernt automatisch Zeilenumbrüche und kann mehrere Texte zu einem Text vereinigen. Die Breite des Text kann mit Hilfe der Option -w (width) angegeben werden
- head Zeigt die ersten 10 Zeilen (per Voreinstellung) einer oder mehrere Dateien an. Mit der Option -n kann die Anzahl der auszugebenden Zeilen definiert werden. Siehe Beispiel unten.
- hexdump Dateien im hexadezimalen, dezimalen, ASCII oder oktalen Format dargestellt werden. Dieses Programm kann ebenfalls ohne Probleme Dateien im Binärformat auslesen. Z.B. kann mit hexdump die Partitionstabelle des MBR ausgelesen werden.
- od octal dump; ähnlich wie hexdump, nur mit geringerem Funktionsumfang und verwendet per Voreinstellung das Oktalformat. Mit der Option -x kann die Ausgabe auch hexadezimal erfolgen
- join Verknüpfung zweier Dateien. join verknüpft dabei die Zeilen mit dem gleichen Indikator jeder Datei in einer neuen Zeile. Für den Delimiter wird hier die Option -t verwendet. Mit der Option -j wird festgelegt, aus welcher Datei der Indikator mit ausgegeben wird. Alternativ zu -j kann auch direkt die Datei mit -1 oder -2 angegeben werden (laut manpage). Siehe auch Beispiel unten.
- less Pager. Es ist ein Programm, mit dem Textdateien angezeigt werden können. less bietet einige Vorteile gegenüber more, welches ebenfalls Textdateien ausgeben kann. less liest nicht erst die vollständige Datei ein (more schon) sondern immer nur so viele Daten, wie auch ausgegeben werden können. less bietet ebenfalls eine Suchfunktion und man kann hier auch wieder nach oben scrollen, nicht nur nach unten, was bei more nicht möglich ist. more muss erneut aufgerufen werden, wenn man Text weiter oben lesen möchte. Ausgabe erfolgt in "eigenem" Fester, nicht über die stdout.
- nl number lines; Dieses Programm nummeriert die Zeilen in einem Text (nicht verwechseln mit ln, was Links auf Dateien und Verzeichnisse erzeugt). Siehe Beispiel unten
- paste Zusammenführen von mehreren Dateien. Im Gegensatz zu cat werden die Dateien nicht untereinander, sondern nebeneinander zusammengefügt. Siehe Beispiel unten.
- pr Vorbereitung einer Datei für den Druck. Wird heute eher nicht mehr verwendet. Ausgabe sollte in eine neue Datei umgeleitet werden, da die Ausgabe über stdout erfolgt
- sed
stream editor; Texteditor mit vielen Möglichkeiten. Es handelt sich jedoch nicht um einen Editor, wie z.B. nano, sondern um einen Editor, der den Datenstrom manipuliert. Er kann in pipe-Ketten verwendet werden, jedoch kann ihm ebenfalls die zu bearbeitende Datei direkt übergeben werden. Auch hier sind bei der Definition der Übergabe-Werte die Sonderzeichen speziell zu behandeln unter Beachtung, dass die Shell selbst, diese Sonderzeichen ebenfalls interpretiert. Daher empfiehlt es sich, diese Ausdrücke in einfache Anführungszeichen zu setzen. Siehe auch Ubuntuusers.de - sed s/X/Y/ textdatei :In jeder Zeile wird das erste X durch ein Y ersetzt
- sed s/X/Y/g textdatei :Jedes X wird durch ein Y ersetzt
- sed '/^#/d' textdatei :Zeilen die mit "#" anfangen, werden gelöscht
- sed '3iNeueZeile' textdatei :Es wird eine neue Zeile vor der 3.Zeile eingefügt
- sort Zeilen von Textdateien sortieren. Es können aber auch andere Eingabequellen verwendet werden, die dann sortiert über z.B. die stdout ausgegeben werden. Mit Hilfe der folgenden Optionen kann die Sortierung nach gewissen Kriterien organisiert werden:
- -n numerische Kriterien
- -o Umleitung der Ausgabe in eine Datei (outfile)
- -r Ergebnis in umgekehrter Reihenfolge ausgeben (reverse)
- split Splittet große Dateien in mehrere kleine auf. split arbeitet zeilenorientiert und teilt eine Datei per Voreinstellung in kleinere Dateien je 1000 Zeilen auf. Mit der Option -b kann ein Datei in kleinere Dateien nach dem Kriterium der Größe (Angabe in Bytes) vorgenommen werden. Zusammensetzen der Datei mit Hilfe des Programms cat. Als Argument kann ebenfalls der Name der Teildateien angegeben, die dann von split mit Buchstabenkombinationen erweitert erzeugt werden.
- tail Gibt die letzten 10 Zeilen (per Voreinstellung) einer Datei aus. Nützliche Funktion, wenn man z.B. ein Log liest und wissen will, was als letztes passiert ist. Mit der Option -n kann die Anzahl der auszugeben Zeilen definiert werden. Mit der Option -f kann tail auch den laufenden Prozess anzeigen, sprich eine Log-Datei kann laufend angezeigt werden. (Beenden mit CTRL + C)
- tr (translate) Ersetzt oder löscht einzelne Zeichen in der Ausgabe einer Datei. Die Datei selbst wird nicht verändert. tr selbst kann kein Dateiname übergeben werden, daher behilft man sich hier mit der Ausgabe der Datei mittels cat und piped die Ausgabe dann durch tr. Wichtige Optionen für tr sind:
- -d bzw. --delete löscht das angegebene Zeichen
- -c bzw. --complement kehrt die Ausgabe ins Gegenteil
- -s bzw. --squeeze-repeats mehrere identische Zeichenfolgen durch ein Zeichen ersetzen
- es ist auch möglich Kleinbuchstaben in Großbuchstaben umzuwandeln. ... | a-z A-Z oder ... | [:lower:] [:upper:]. Weiterhin sind auch noch andere Kombinationen möglich, die der Manpage entnommen werden können
- Steuerzeichen können ebenfalls ersetzt werden. Dafür muss ein Backslash vorgestellt werden. Um den Backslash selbst zu ersetzten, muss ein doppelter \\ gesetzt werden. Genaue Angaben zu den verschiedenen Steuerzeichen siehe Manpage. Siehe auch Beispiel unten.
- uniq Kürzen einer Ausgabe einer Datei um sich wiederholende Zeilen (z.B. in Logdateien). Funktioniert aber nur, wenn die Zeilen direkt aufeinander folgen, was eine Sortierung (z.B. mit sort) vorher erforderlich macht
- wc word count; zählt die Anzahl der Zeilen, Wörter und Bytes einer Datei (Standardeinstellung). Die Reihenfolge der ausgegebenen Werte entspricht der beschriebenen und kann nicht geändert werden. Es können auch mehrere Dateien oder Wildcards verwendet werden, dabei werden die Dateien einzeln aufgelistet, mit einer abschließenden Zusammenfassung der Gesamtbeträge. Mit den folgenden Optionen kann eine differenzierte Ausgabe erfolgen:
- -c zeigt nur die Anzahl der Bytes an
- -l zeigt nur die Anzahl der Zeilen (lines) an
- -w zeigt nur die Anzahl der Wörter an
- -m zeigt nur die Anzahl der Zeichen an
- tac umgedrehtes cat -> Es gibt die Dateien von hinten nach vorne aus. Siehe Beispiel unten
- cut, paste und join werden gerne in Kombination verwendet.
ilonka@superhero:~/Dokumente/LPI_Zertifikat$ cat textfile1.txt
2:Birnen
1:Aepfel
3:Bananen
4:Erdbeeren
2:Birnen
1:Aepfel
3:Bananen
4:Erdbeeren
ilonka@superhero:~/Dokumente/LPI_Zertifikat$ cat -A textfile1.txt
2:^IBirnen$
1:^IAepfel$
3: Bananen$
4: Erdbeeren$
ilonka@superhero:~/Dokumente/LPI_Zertifikat$ head textfile1.txt textfile2.txt
==> textfile1.txt <==
2: Birnen
1: Aepfel
3: Bananen
4: Erdbeeren
==> textfile2.txt <==
1:hellgruen
2:rot
3:gelb
4:dunkelgruen
ilonka@superhero:~/Dokumente/LPI_Zertifikat$ nl textfile2.txt
1 hellgruen
2 rot
3 gelb
4 dunkelgruen
ilonka@superhero:~/Dokumente/LPI_Zertifikat$ cut -d: -f2 textfile1.txt
Birnen
Aepfel
Bananen
Erdbeeren
ilonka@superhero:~/Dokumente/LPI_Zertifikat$ paste textfile1.txt textfile2.txt
1:Birnen 1:hellgruen
2:Aepfel 2:rot
3:Bananen 3:gelb
4:Erdbeeren 4:dunkelgruen
ilonka@superhero:~/Dokumente/LPI_Zertifikat$ join -t : -j 1 textfile1.txt textfile2.txt
1:Birnen:hellgruen
2:Aepfel:rot
3:Bananen:gelb
4:Erdbeeren:dunkelgruen
Alternativ zur Option -j 1 kann auch -1 eingegeben werden, wobei dann das zu verwendende Feld aus der Datei noch definiert werden muss (-1 1)
ilonka@superhero:~/Dokumente/LPI_Zertifikat$ cat textfile1.txt | tr n x
1:Birxex
2:Aepfel
3:Baxaxex
4:Erdbeerex
4: Erdbeeren
3: Bananen
2: Aepfel
1: Birnen