はじめに
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の値 。