GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Konvertieren Sie Tabulatoren in Leerzeichen im Linux-Terminal mit dem Befehl „Erweitern“.

Die Debatte über die Verwendung von Tabulatoren und Leerzeichen in der Programmierung ist endlos.

Auch wenn Sie die Verwendung von Tabulatoren bevorzugen, besteht die Möglichkeit, dass Ihre Kodierungsrichtlinie die Verwendung von Leerzeichen vorschlägt.

Aber wenn Sie bereits überall in Ihrem Programm Tabulatoren verwendet haben und diese Tabulatoren in Leerzeichen umwandeln müssen, damit der Überprüfer Ihren Code zulässt, sind Sie hier richtig.

In diesem Tutorial zeige ich Ihnen, wie Sie die Tabulatoren in einer Textdatei in der Linux-Befehlszeile in Leerzeichen umwandeln.

Verwenden des Erweiterungsbefehls zum Konvertieren von Tabulatoren in Leerzeichen in der Linux-Befehlszeile

Ich verwende diese Beispieltextdatei, die ein einfaches C++-Programm zum Überprüfen ungerader und gerader Zahlen ist. Dies ist der Inhalt der Datei:

Sie können diese Datei hier herunterladen, wenn Sie den Befehl üben möchten, während Sie diesem Tutorial folgen.

Überprüfen Sie, ob Ihre Textdatei Tabs hat

Es gibt mehrere Möglichkeiten, dies zu tun. Die einfachste Methode, die ich finde, ist die Verwendung des cat-Befehls.

Sie können den cat-Befehl mit der Option -T verwenden und werden alle Tabs als ^I auf dem Bildschirm (stdout) anzeigen.

cat -T tab_file

Sie können die Position der Registerkarten in der Datei sehen.

#include
using namespace std;
int main()
{
^Iint n;
^Icout << “Enter a number:^I“;
^Icin >> n;
^I
^Iif (n%2 == 0) {
^I^Icout<<n<< “is an even Number”;
^I}
^Ielse
^I^Icout<<n<< “is an odd Number”;
^Ireturn 0;
}

Tabs mit dem Erweiterungsbefehl in Leerzeichen umwandeln

Wenn Sie den Erweiterungsbefehl für eine Datei verwenden, werden alle Tabulatoren in einen Block mit 8 Leerzeichen umgewandelt und die Ausgabe auf dem Bildschirm angezeigt.

expand tab_file

Aber das ist nicht sehr bequem, oder? Sie werden die Änderungen hier kaum sehen. Eine bessere Idee wäre, die Ausgabe in einer anderen Datei zu speichern.

expand tab_file > space_file

Wenn Sie die Datei jetzt mit dem cat-Befehl sehen, werden Sie keine Registerkarten mehr finden.

Reduzieren Sie die Anzahl der Leerzeichen

Wie ich im vorherigen Abschnitt erwähnt habe, entspricht ein Tabulator standardmäßig 8 Leerzeichen. Das würde super komisch aussehen, wenn Ihr Code so große Einrückungen hat.

Das Gute daran ist, dass Sie die Standardgröße des Speicherplatzes mit der Option -t ändern können.

expand -t N tab_file

Wenn Sie beispielsweise jeden Tabulator in 2 Leerzeichen ändern müssen, können Sie den Erweiterungsbefehl wie folgt verwenden:

expand -t2 tab_file > space_file

Nur führende Tabulatoren in Leerzeichen umwandeln

Oft möchte man in den Programmen nur die führenden Tabulatoren umwandeln, also die Tabulatoren am Zeilenanfang. Sie möchten nicht die Tabulatoren zwischen den Zeilen berühren, die eigentlich Teil des Codes sind.

Expand bietet diese Option ebenfalls. Wenn Sie nur die führenden Tabulatoren in Leerzeichen umwandeln möchten, verwenden Sie die –i-Option .

Wenn wir das vorherige Beispiel fortsetzen, sieht der Befehl so aus:

expand -t2 -i tab_file > space_file

Tabs in Leerzeichen umwandeln und in der Originaldatei speichern

In allen obigen Beispielen haben Sie die konvertierte Datei in einer neuen Datei gespeichert. Aber wenn Ihr Ziel darin besteht, Ihren Code zu bereinigen, indem Sie die Tabulatoren in Leerzeichen der vorhandenen Programmdateien umwandeln, möchten Sie, dass die Ausgabe in der Originaldatei selbst gespeichert wird.

Dazu können Sie den Schwammbefehl verwenden. Sponge „saugt“ die gesamte Standardeingabe auf, bevor sie in die Ausgabe geschrieben wird. Dies ist äußerst nützlich, wenn Sie versuchen, dieselbe Datei zu ändern und zu speichern.

Jetzt ist der Schwammbefehl möglicherweise nicht auf Ihrem System verfügbar. Sie müssen das moreutils-Paket installieren. Es sollte verfügbar sein

Auf Ubuntu/Debian-basierten Distributionen können Sie diesen Befehl verwenden, um moreutils zu installieren:

sudo apt install moreutils

Einmal installiert, können Sie es in der folgenden Funktion verwenden:

expand -t2 -i tab_file | sponge tab_file

Tabs in Leerzeichen in allen übereinstimmenden Dateien in einem Verzeichnis umwandeln

Was Sie bisher gelernt haben, war auf eine einzelne Datei anwendbar. Aber wenn Sie ein Projekt mit mehreren Programmdateien haben und in allen die Tabulatoren in Leerzeichen umwandeln möchten, müssen Sie hier etwas cleverer sein.

Was wir bisher gelernt haben, kann mit den großartigen Find- und Exec-Befehlen kombiniert werden.

find . -name '*.cpp' -type f -exec bash -c 'expand -t 4 "$0" | sponge "$0"' {} \;

Der obige Befehl findet alle Dateien, die mit der Erweiterung cpp enden, übergibt diese Dateien an den expand-Befehl und der expand-Befehl schreibt die Ausgabe mit Hilfe des sponge-Befehls in die Originaldateien.

Sie denken vielleicht, dass die Verwendung des Befehls sed an dieser Stelle einfacher gewesen wäre, aber das ist ganz Ihre Entscheidung.


Linux
  1. Konvertieren Sie Audiodateien mit diesem vielseitigen Linux-Befehl

  2. Linux expand Command Tutorial für Anfänger (mit Beispielen)

  3. Linux tty Command Tutorial für Anfänger (mit Beispielen)

  4. JQ-Befehl in Linux mit Beispielen

  5. 5 Verwendungen des mv-Befehls im Linux-Terminal

Curl-Befehl in Linux mit Beispielen

Echo-Befehl in Linux mit Beispielen

Linux-IP-Befehl mit Beispielen

Tr-Befehl in Linux mit Beispielen

15 Linux-PS-Befehl mit Beispielen

Linux-CD-Befehl mit Beispielen