Das Arbeiten an der Linux-Befehlszeile erfordert, dass Sie lernen, einige sich wiederholende Aufgaben schnell auszuführen. Eine solche Aufgabe, an der Sie früher oder später beteiligt sein könnten, ist das Umwandeln von Leerzeichen in Tabulatoren oder umgekehrt. In diesem Tutorial besprechen wir ein Befehlszeilenprogramm mit dem Namen unexpand - das wird in solchen Situationen eine große Hilfe sein.
Aber bevor wir anfangen, ist es erwähnenswert, dass alle Beispiele in diesem Artikel auf einem Ubuntu 16.04 LTS-Rechner getestet wurden.
Linux-Unexpand-Befehl
Mit dem Befehl unexpand können Sie Leerzeichen in Tabulatoren umwandeln. Es folgt die Syntax:
unexpand [OPTION]... [FILE]...
Und so beschreibt es die Manpage:
Convert blanks in each FILE to tabs, writing to standard output. With no FILE, or when FILE is -, read standard input.
Im Folgenden finden Sie einige Beispiele im Q&A-Stil, die Ihnen eine gute Vorstellung davon vermitteln sollen, wie der Befehl „unexpand“ funktioniert.
Q1. Wie verwende ich den Unexpand-Befehl?
Angenommen, Sie haben eine Datei mit Text, der Tabulatoren enthält. Nun, aus welchen Gründen auch immer, wandelst du diese Tabulatoren mit dem expand-Befehl in Leerzeichen um, und wenn du jetzt wieder Leerzeichen in Tabulatoren umwandeln möchtest, dann kannst du in diesem Fall den unexpand-Befehl verwenden.
Zum Beispiel:
unexpand file1
Das Tool erzeugt die konvertierte Ausgabe auf stdout. Um es also zu speichern, können Sie es in eine Datei umleiten. Zum Beispiel:
unexpand file1 > file2
Es ist erwähnenswert, dass dieses Tool standardmäßig nur mit anfänglichen Leerzeichen funktioniert. Sie können die Option -a verwenden, um dem Dienstprogramm mitzuteilen, dass Sie alle Leerzeichen in Tabulatoren umwandeln möchten.
Q2. Wie erzwinge ich das Aufheben der Erweiterung, um nur anfängliche/führende Leerzeichen zu konvertieren?
Das Tool bietet eine Option, die es zwingt, nur anfängliche Leerzeichen oder Leerzeichen zu konvertieren (selbst wenn die Option -a vorhanden ist). Die fragliche Option ist --first-only .
unexpand --first-only -a file1 > file2
Q3. Was macht die Option -t?
Nun, die Option -t hat mehrere Rollen. Es akzeptiert entweder eine einzelne Zahl oder eine durch Kommas getrennte Liste von Zahlen. Wenn Sie eine einzelne Zahl (z. B. 'n') übergeben, stellt der Befehl unexpand sicher, dass Leerzeichen in der Datei alle 'n' Positionen in Tabulatoren komprimiert werden.
Um beispielsweise Leerzeichen alle 3 Positionen in Tabulatoren zu komprimieren, verwenden Sie diese Option wie folgt:
unexpand -t 3 file1 > file2
Wenn dieser Option andererseits eine befehlsgetrennte Liste von Zahlen gegeben wird, platziert das Tool Tabstopps an diesen spezifischen Positionen.
unexpand -t 1,2,3 file1 > file2
Q4. Wie lässt sich die Leseeingabe von STDIN nicht erweitern?
Das ist ziemlich einfach - führen Sie einfach den Befehl ohne Dateinamen als Eingabe aus (verwenden Sie Strg+D, um dem Dienstprogramm mitzuteilen, dass Sie fertig sind).
Hier ist, wovon ich spreche:
unexpand
Schlussfolgerung
Abhängig von der Art Ihrer Arbeit kann der Befehl unexpand eine große Hilfe sein. In diesem Tutorial haben wir den Großteil der Befehlszeilenoptionen besprochen, die dieses Tool bietet. Um mehr zu erfahren, besuchen Sie die Manpage.