GNU/Linux >> Linux の 問題 >  >> Linux

DOSからUnixへ:コマンドと例

はじめに

DOS / Windowsで作成されたファイルは、キャリッジリターン(\ r )を使用します )と改行(\ n )行末の場合。ただし、Unix/Linuxのファイルは改行のみを使用します。

したがって、あるシステムから別のシステムにファイルを転送するときは、必ずファイルを変換してください。

このチュートリアルでは、DOSからUnixに、またはその逆にファイルを転送する方法を学習します。

Linuxでのファイルの変換

適切な行末を使用するためにファイルを転送する方法はいくつかあります。次を使用してファイルを変換します:

  • dos2unix コマンド
  • unix2dos コマンド
  • sed コマンド(Linux sedコマンドチュートリアルを参照)
  • tr コマンド
  • Vi / Vim テキストエディタ(Vimコマンドのチートシートを参照)
  • perl ワンライナーコマンド

オプション1:dos2unixコマンドを使用してDOSをUNIXに変換する

テキストファイルの改行を変換する最も簡単な方法は、 dos2unixを使用することです。 ツール。

次のコマンドを実行してツールをインストールします:

sudo apt install dos2unix

または:

sudo dnf install dos2unix

DOS / Windowsで作成したファイルをLinuxシステムにダウンロードする場合は、 dos2unixを使用して変換できます。 コマンド:

dos2unix [file_name]

このコマンドは、ファイルを元の形式で保存せずに変換します。元のファイルを保存する場合は、 -bを追加します ファイル名の前の属性。そうすることで、同じ名前と .bakでバックアップファイルが作成されます。 拡張機能。

dos2unix -b [file_name]

オプション2:unix2dosコマンドを使用してUNIXをDOSに変換する

Linuxシステムで作成されたファイルをDOS形式に変換するには、次のコマンドを実行します。

unix2dos [file_name]

または、 -bを追加します 元のファイルをバックアップとして保存する属性:

unix2dos -b [file_name]

オプション3:sedコマンドの使用

sedを使用することもできます (ストリームエディタ)キャリッジリターンラインを削除するコマンド エンディング。そのためのコマンド構文は次のとおりです。

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

^Mと入力するだけでなく Ctrl+Vを押します 続いてCtrl+M キャリッジリターン記号を入力します。 sedを使用する場合 コマンドで、DOSファイルの名前を指定します [original_file_name] 変換されたファイルにどのように名前を付けるか[converted_file_name]

ファイル形式をUnixからDOSに変更するには 、次のコマンドを使用します:

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

オプション4:trコマンドの使用

ファイルをUnix形式に変換する別の方法は、\ rを削除することです。 trで終わる行 指図。 tr commandは、文字を変換または削除するためのコマンドラインユーティリティです。

次の形式でコマンドを使用します:

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

オプション5:Vimテキストエディタの使用

Vi / Vimテキストエディタを使用して、DOS形式のファイルからキャリッジリターンラインの末尾を削除することもできます。
Vi / Vimでファイルを開きます:

vi [file_name]

次に、 :を押します 次のVi/Vimコマンドを入力します(必ず Ctrl+Vと入力してください) 次にCtrl+m ^mの代わりに ):

:%s/^ m //g

オプション6:PerlOneライナーの使用

最後に、Perlのワンライナーコマンドを使用して、すべての\ rを削除できます。 行末。パールオンライナーは、1行のコードに収まるスクリプトです。

すべてのキャリッジリターンとラインフィードの末尾をラインフィードだけに置き換えるには:

1. Vi/Vimテキストエディタでファイルを開きます。

2. :を押します コマンドラインにプロンプ​​トを表示します。

3.次のコマンドを入力して、Enterキーを押します。

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

ファイルの変更がすぐに表示されるはずです。

例:サンプルファイルをDOSからUnix形式に変換する

sample-dos-fileという名前のファイルをダウンロードしたとします。 。

Vim / Viテキストエディタを使用してファイルを開くと、各行の終わりの後に ^Mがあることがわかります。 (キャリッジリターン)。

ファイルを表示するもう1つの方法は、行末にキャリッジリターンとラインフィードの両方を使用することです。ファイルを8進数で表示することです。

これを行うには、次のコマンドを実行します:

od -bc sample-dos-file.txt

次の画像のように、出力にはファイルの内容とその8進値が表示されます。各行の終わりが8進数の値015(\ r)でマークされていることがわかります。 および012(\ n)

ここで、ファイルを変換してキャリッジリターンの末尾をすべて削除するには、次のコマンドを実行します。

dos2unix sample-dos-file

同じファイルをVim/Viで開きます。 ^Mは含まれていません 行末を示す記号。

ファイルがUnix形式であることを確認するために、8進値でコンテンツを開いて表示することもできます。出力には、 012だけが表示されます。 \ nの値 。


Linux
  1. Linuxコマンド-概要と例

  2. Linuxコマンド:jobs、bg、およびfg

  3. Linux AWKコマンド–LinuxおよびUnixの使用構文の例

  1. Linuxでのmvコマンド:7つの重要な例

  2. 6 Linux のファイルとディレクトリを移動または名前変更する mv コマンドの例

  3. Linux / UNIX でファイルを管理する 10 の Cat コマンドの例

  1. Linux での ln コマンドの例

  2. Linux での file コマンドの例

  3. UNIX/Linux での tail コマンドの例