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

DOS zu Unix:Befehle und Beispiele

Einführung

In DOS/Windows erstellte Dateien verwenden einen Wagenrücklauf (\r ) und Zeilenvorschub (\n ) für Zeilenenden. Dateien in Unix/Linux verwenden jedoch ausschließlich Zeilenvorschub.

Stellen Sie daher sicher, dass Sie die Dateien konvertieren, wenn Sie eine Datei von einem System auf ein anderes übertragen.

In diesem Tutorial lernen Sie, wie Sie Dateien von DOS nach Unix und umgekehrt übertragen.

Konvertieren von Dateien unter Linux

Es gibt mehrere Möglichkeiten, wie Sie Dateien übertragen können, um die entsprechenden Zeilenenden zu verwenden. Konvertieren Sie die Dateien mit:

  • dos2unix Befehl
  • unix2dos Befehl
  • sed Befehl (siehe Linux-Tutorial zum Befehl sed)
  • tr Befehl
  • Vi/Vim Texteditor (siehe Spickzettel für Vim-Befehle)
  • perl Einzeiler-Befehl

Option 1:Konvertieren von DOS in UNIX mit dem Befehl dos2unix

Der einfachste Weg, Zeilenumbrüche in einer Textdatei umzuwandeln, ist die Verwendung von dos2unix Werkzeug.

Installieren Sie das Tool, indem Sie den folgenden Befehl ausführen:

sudo apt install dos2unix

oder:

sudo dnf install dos2unix

Wenn Sie eine in DOS/Windows erstellte Datei auf Ihr Linux-System herunterladen, können Sie sie mit dos2unix konvertieren Befehl:

dos2unix [file_name]

Der Befehl konvertiert die Datei, ohne sie im Originalformat zu speichern. Wenn Sie die Originaldatei speichern möchten, fügen Sie -b hinzu -Attribut vor dem Dateinamen. Dadurch wird eine Sicherungsdatei mit demselben Namen und der .bak-Datei erstellt Erweiterung.

dos2unix -b [file_name]

Option 2:Konvertieren von UNIX in DOS mit dem unix2dos-Befehl

Führen Sie den folgenden Befehl aus, um eine auf einem Linux-System erstellte Datei in das DOS-Format zu konvertieren:

unix2dos [file_name]

Fügen Sie alternativ das -b hinzu Attribut zum Speichern der Originaldatei als Backup:

unix2dos -b [file_name]

Option 3:Verwenden des sed-Befehls

Sie können auch den sed verwenden (Stream-Editor) Befehl zum Entfernen der Wagenrücklaufzeile Enden. Die Befehlssyntax dazu lautet:

sed 's/^M$//' [original_file_name]>[converted_file_name]

Anstatt einfach ^M einzugeben , drücken Sie Ctrl+V gefolgt von Ctrl+M um das Wagenrücklaufsymbol einzugeben. Bei Verwendung des sed geben Sie den Namen der DOS-Datei [original_file_name] an und wie Sie die konvertierte Datei benennen möchten [converted_file_name] .

Um das Dateiformat von Unix auf DOS zu ändern , verwenden Sie den Befehl:

sed 's/$/^M/' [original_file_name]>[converted_file_name]

Option 4:Verwenden des tr-Befehls

Eine andere Möglichkeit, eine Datei in das Unix-Format zu konvertieren, besteht darin, \r zu entfernen Zeilenenden mit dem tr Befehl. Der tr command ist ein Befehlszeilendienstprogramm zum Übersetzen oder Löschen von Zeichen.

Verwenden Sie den Befehl im folgenden Format:

tr -d '\r' < [original_file_name]>[converted_file_name]

Option 5:Verwenden des Vim-Texteditors

Mit dem Vi/Vim-Texteditor können Sie auch Wagenrücklauf-Zeilenenden aus Dateien im DOS-Format entfernen.
Öffnen Sie die Datei in Vi/Vim:

vi [file_name]

Drücken Sie dann : und geben Sie den folgenden Vi/Vim-Befehl ein (stellen Sie sicher, dass Sie Ctrl+V eingeben dann Ctrl+m statt ^m ):

:%s/^ m //g

Option 6:Verwenden eines Perl One-Liners

Schließlich können Sie einen Perl-Einzeiler-Befehl verwenden, um alle \r zu löschen Zeilenenden. Pearl Online-Liner sind Skripte, die in eine einzige Codezeile passen.

So ersetzen Sie alle Wagenrücklauf- und Zeilenvorschubenden durch reine Zeilenvorschübe:

1. Öffnen Sie die Datei im Vi/Vim-Texteditor.

2. Drücken Sie : um die Befehlszeile aufzurufen.

3. Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

perl -pi -e 's/\r\n/\n/g' [file_name]

Sie sollten die Änderungen in der Datei sofort sehen.

Beispiel:Konvertieren einer Beispieldatei vom DOS- in das Unix-Format

Angenommen, Sie haben eine Datei mit dem Namen sample-dos-file heruntergeladen .

Wenn Sie die Datei mit dem Vim/Vi-Texteditor öffnen, sehen Sie, dass nach jedem Zeilenende ^M steht (ein Wagenrücklauf).

Eine andere Möglichkeit, um zu sehen, dass die Datei sowohl Wagenrücklauf als auch Zeilenvorschub für Zeilenenden verwendet, besteht darin, die Datei in Oktalwerten anzuzeigen.

Führen Sie dazu den folgenden Befehl aus:

od -bc sample-dos-file.txt

Die Ausgabe zeigt den Inhalt der Datei mit ihren Oktalwerten an, wie im Bild unten. Sie können sehen, dass jedes Zeilenende mit den Oktalwerten 015 (\r) gekennzeichnet ist und 012 (\n) .

Um nun die Datei zu konvertieren und alle Wagenrücklaufenden zu entfernen, führen Sie den folgenden Befehl aus:

dos2unix sample-dos-file

Öffnen Sie dieselbe Datei in Vim/Vi. Es enthält kein ^M Symbole, die das Zeilenende signalisieren.

Um zu bestätigen, dass die Datei im Unix-Format vorliegt, können Sie den Inhalt auch in Oktalwerten anzeigen. Die Ausgabe sollte nur 012 anzeigen Werte für \n .


Linux
  1. Linux-Befehle – Übersicht und Beispiele

  2. Linux-Befehle:jobs, bg und fg

  3. Der Linux-AWK-Befehl – ​​Syntaxbeispiele für Linux und Unix

  4. 6 mv-Befehlsbeispiele zum Verschieben oder Umbenennen von Linux-Dateien und -Verzeichnissen

  5. 10 Cat-Befehlsbeispiele zum Verwalten von Dateien unter Linux / UNIX

Linux-WC-Befehl mit Beispielen

Die Alias- und Unalias-Befehle mit Beispielen erklärt

50 einfacher und nützlicher Linux-Cut-Befehl in Unix mit Beispielen

AWK-Befehl unter Linux/Unix

Unix LS-Befehl:15 praktische Beispiele

Beispiele für die Dateibearbeitung mit den Unix-Befehlen Tac, Rev, Paste und Join