Dieser Artikel liefert die Fortsetzung des Themas Textbearbeitung mit Filterkommandos…
Textbearbeitung mit Filterkommandos:
Für diese Experimente wurde wieder eine Datei im Dateimanager angelegt (story.txt) und mit einem umfangreicheren Text gefüllt…
- cat story.txt
Mit dem cat-Befehl wird die gesamte Datei auf dem Terminal ausgelesen. Mit folgendem Befehl wird die Ausgabe jetzt auf eine Zeilenlänge von 20 Zeichen begrenzt.
- fmt -w 20 story.txt
Der Effekt sollte sofort sichtbar sein. Details über die Einrückungen und Zeilenumbrüche spare ich mir hier. Der fmt-Befehl kann auch mit Option -c genutzt werden.
- fmt -c -w 40 story.txt
Wie wäre es mit einer formatierten Ausgabe? Kein Problem:
- fmt -w 20 story.txt | pr -h „Märchen“ -2
Der Ausgabe wird jetzt eine Überschrift, ein Datum, eine Seitenzahl und zwei Spalten zugefügt. Wer braucht jetzt Zeilennummern?
- nl story.txt
Der wc-Befehl:
Dieser Befehl ist kein Griff ins Klo. Es werden jetzt Wörter gezählt oder Zeichen oder Zeilen… Also es wird etwas gezählt…
- wc story.txt
Angezeigt werden nun die Zeilen, die Wörter und die Zeichen. Das Ergebnis ist wieder etwas schräg, weil das Programm anders zählt als vielleicht vermutet. Der erste Absatz wird als eine Zeile gezählt. Die Leerzeilen werden auch gezählt und der zweite Absatz ist wieder nur eine Zeile für das “word count Programm“… Die Optionen sind folgende:
- wc -l für Zeilen (Lines)
- wc -w für Wörter (Words)
- wc -c für Zeichen (Characters)
In Verbindung mit dem ls-Befehl und der Pipe kann man damit die Anzahl in einem Ordner ermitteln lassen…
- ls | wc -l
Das Ergebnis sollte mit der Angabe im Dateimanager übereinstimmen.
Der sort-Befehl:
Jetzt soll der Dateiinhalt zeilenweise sortiert werden – dazu gibt es den sort-Befehl. In der Beispieltdatei sind drei Namen absichtlich in falscher Reihenfolge eingetragen.
- sort abx.txt
In der Datei stehen die Namen in der Reihenfolge Bernd, Anton und Charly. Der sort-Befehl sortiert die Zeilen in alphabetischer Reihenfolge. Probleme kann es eventuell mit deutschen Sonderzeichen geben. Doch auch dafür gibt es eine Lösung…
- LC_COLLATE=de_DE sort abc.txt
In meinem System war deutsch aber schon voreingestellt. Der LC_COLLATE-Befehl sorgt dann für eine falsche Sortierung.
Der uniq-Befehl:
- uniq abc.txt
Der uniq-Befehl filtert gleiche Zeilen aus – aber auch nur wenn sie direkt aufeinander folgen… Weil es jetzt mit vernünftigen Praxisbeispielen immer schwieriger wird, lasse ich einige Filterkommandos aus und mache hier erstmal Schluß… Die Befehle cut, paste, expand, join, pr und tee werden also nur bei Bedarf in einem späteren Artikel vorgestellt…