Tabulatoren speichern eine Bewegung zum nächsten Tabulatorstopp und keine feste Anzahl sichtbarer Leerzeichen. Ihre dargestellte Breite hängt von der aktuellen Spalte und den Tabulatorstopps ab. expand und unexpand wandeln unter Berücksichtigung dieser Positionen zwischen Tabulatorzeichen und Leerzeichen um.
Text-Fu · Lektion 10
Erweitern und Zurücksetzen
Lerne, wie Tabulatorstopps die Umwandlung zwischen Tabulatoren und Leerzeichen mit expand und unexpand steuern.
Tabulatoren in Leerzeichen umwandeln
expand liest eine Eingabe, ersetzt Tabulatoren durch die zum Erreichen der passenden Tabulatorstopps nötigen Leerzeichen und schreibt das Ergebnis nach stdout:
$ expand sample.txt
Standardmäßig liegen Tabulatorstopps alle 8 Spalten. Ein Tabulator in Spalte 1 wird daher anders erweitert als einer in Spalte 6; er wird nicht immer durch acht Leerzeichen ersetzt.
Wie ersetzt expand mit Standardeinstellungen ein Tabulatorzeichen?
Tabulatorstopps wählen
Mit -t NUMBER setzt du Tabulatorstopps in Abständen der angegebenen Spaltenzahl. Für Stopps alle vier Spalten:
$ expand -t 4 sample.txt
GNU expand akzeptiert außerdem eine kommagetrennte Liste ausdrücklicher Tabulatorpositionen. Mit -i werden nur Tabulatoren vor dem ersten Nicht-Leerzeichen jeder Zeile umgewandelt.
Welcher Befehl wandelt Tabulatoren mit Stopps alle vier Spalten um?
Umgewandelte Ausgabe sicher speichern
expand bearbeitet die Eingabedatei nicht. Leite stdout an einen anderen Pfad um, wenn du den umgewandelten Text speichern möchtest:
$ expand sample.txt > result.txt
Verwende nicht expand sample.txt > sample.txt. Die Shell leert das Ziel, bevor expand es lesen kann, sodass die Quelldaten verloren gehen können. Nach Prüfung eines getrennt geschriebenen Ergebnisses kannst du das Original bewusst mit einem geeigneten Dateiverwaltungsschritt ersetzen.
Welcher Befehl speichert den erweiterten Text, ohne sample.txt vor dem Lesen zu leeren?
Leerzeichen in Tabulatoren umwandeln
unexpand ersetzt geeignete Leerzeichen durch Tabulatoren und erhält dabei die Ausrichtung an den gewählten Tabulatorstopps. Standardmäßig wandelt GNU unexpand nur anfängliche Leerzeichen vor dem ersten Nicht-Leerzeichen einer Zeile um:
$ unexpand result.txt
Mit -a werden geeignete Leerzeichen in der gesamten Zeile berücksichtigt:
$ unexpand -a result.txt
Dabei wird nicht einfach jede Folge aus acht Leerzeichen ersetzt. Wie bei expand hängt die Umwandlung von Spaltenpositionen und Tabulatorstopps ab. Verwende -t 4 oder eine andere Stoppangabe, wenn die Datei einer abweichenden Konvention folgt.
Welche Leerzeichen berücksichtigt GNU unexpand ohne -a normalerweise zur Umwandlung?
Welche Option weist GNU unexpand an, auch Leerzeichen nach dem ersten Nicht-Leerzeichen zu berücksichtigen?
Ohne benannte Datei lesen beide Befehle von stdin und eignen sich daher für Pipelines. Beachte, dass eine Umwandlung in Leerzeichen und zurück die ursprüngliche Wahl zwischen Tabulatoren und Leerzeichen nicht unbedingt rekonstruiert, auch wenn die sichtbare Ausrichtung gleich bleibt.
Lektion abgeschlossen
Sie haben Erweitern und Zurücksetzen abgeschlossen
Du kannst nun Tabulatoren und Leerzeichen unter Erhalt der Tabulatorstopp-Ausrichtung umwandeln.
Erweitere Tabulatoren bis zum nächsten konfigurierten Stopp.
Setze eigene Tabulatorstopps mit
-t.Speichere die Ausgabe in einer anderen Datei, bevor du eine Eingabe ersetzt.
Wandle mit
unexpandstandardmäßig führende Leerzeichen um.Verwende
-a, wenn Leerzeichen in der gesamten Zeile berücksichtigt werden sollen.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen