WindowsファイルをLinuxサーバーにアップロードした後、読み込めません。改行の問題であることが判明しました。

Linux上のvimで作成したファイルtest.txtをWindowsにコピーしたところ、内容がすべて1行で表示されました。Windowsで作成したtest.txtをLinuxにコピーしたところ、Linuxプログラムが異常動作しました。Windowsで作成したLinuxシェルスクリプトをLinuxにコピーして実行すると、問題が発生します。問題は改行文字^M!にあります。

LinuxでWindowsファイルから\rを削除する方法

vimで書かれたファイルtest.txtをコピーしてWindowsでLinuxシェルスクリプトを作成し、それをLinuxにコピーすると問題が発生します。問題は体に^M!

Unixシステムでは、各行は「<换行>"、つまり "\n";
Windowsでは、各行は「<换行><回 车>つまり、「\n\r」です。
直接的な結果として、Unix システムのファイルを Windows で開くと、すべてのテキストが 1 行になります。
Windows のファイルを Unix で開くと、各行の末尾に余分な ^M 記号が付くことがあります。
vimを使って処理する
vimコマンドモードで、%s/^M$//gと入力します。
Enter キーを押すと、ファイル内のすべての ^M 文字が自動的に削除されます。
では、このコマンドはどういう意味でしょうか? % はファイル全体に一致することを意味し、s は置換を意味し、^M は Ctrl + V Ctrl + M を使用して入力する必要があります。M の後の $ は行末の内容に一致することを意味し、最後の g は各行の一致した内容を置き換える必要があることを意味します。
コマンドの意味を理解すれば、より柔軟に使いこなせるようになります。例えば、ファイル内のVimをすべてVIMに置き換えたい場合は、:%s/Vim/VIM/gのようなコマンドを使用します。

方法1: :%s/^M//g

コマンドモードでは、%s/^M//gと入力し、Enterキーを押して置換します。
「^M」の入力は、それぞれ「Ctrl+v」と「Ctrl+M」によって生成されることに注意してください。

方法 2::set fileformat=unix

viでテキストファイルを開く
vi 編集するファイルの名前
コマンドモードで入力する
:set ファイルフォーマット = unix
:w

方法3: sedツールを使用する

sedツールの使用
sed 's/^M//' ファイル名 > tmp_filename

方法4: tr -d '\r'

もちろん、Windows では復帰文字に余分な '\r' があるため、'\r' を削除することで次のことも実現できます。
tr -d '\r'

方法5: dos2unixコマンド(最もよく使われる方法)

dos2unix コマンド:
dos2unix 変換するファイルの名前
ファイルを直接 Unix 形式に変換する
上記の方法により、Windows で編集されたファイルを Linux で読み取れるファイルに変換できます。

1/5 - (1票)

手紙への返信

メールアドレスが変更されることはありません。 支払い欄に必須の項目は必須です