テキストファイルの改行をWindows形式とUnix / Linux形式の間で変換する方法は?


33

テキストファイルの改行をWindows形式とUnix / Linux形式の間で変換するにはどうすればよいですか?

* nix環境がありますが、Windowsスタイルの改行でデータをインポートおよびエクスポートする必要があります。これを行うための標準のユーティリティまたはコマンドがあると思いましたが、見つけられないようです。

回答:


42

あなたは、おそらく探しているdos2unix、unix2dos、todosまたはfromdosあなたのディストリビューションによって異なります。Ubuntu / Debianパッケージtodos/ メモリからtofrodosパッケージのfromdos一部として。


4
Windowsソリューションを探している人がこの質問に出くわした場合、アップストリームサイトdos2unixはwaterlan.home.xs4all.nl/dos2unix.htmlであり、Windowsでも機能します。
— ワンブル

Homebrewを使用してMac OS Xにdos2unix/unix2dosをインストールできます。Homebrewがインストールされている場合、コマンドはで、この式を使用します。brew install dos2unix
— ロリーオケイン

24

1つのオプションは、コマンドラインでunix2dos(およびdos2unix戻るために)使用することです。

もう1つの方法は、テキストエディターを使用することです
。viの場合::set ff = dosを使用して、行末をdos行末に設定します。
emacsの場合:Cx [ENTER] f dos [ENTER]

お気に入りのGUIベースのエディター(jeditなど)については、マニュアルまたはGoogleを確認することをお勧めします。

最後に、テキストエディターを扱いたくない場合、より一般的なユーティリティなどを使用してそれを行うだけです(またはunix2dosをインストールしないでください)。

tr -d '\r' < infile > outfileWindowsから移動するには-> Unix Unix
awk 'sub("$", "\r")' unixfile.txt > winfile.txtから移動するには-> Windows trUnixからWindowsに移動することはできません。


dos2unixがトリックを作成しましたが、trユーティリティのおかげで、過去に多くの時間を節約できたはずです!
— 2009年

ファイルが混在行末を持っている場合は、適切にそれをロードしてくださいff::e ++ff=unix。少なくともdos -> unix変換には意味があります。
— x-yuri 14

そのawk one linerは、男性に魚を教えています。私は将来的にはわずかに少なく空腹になるだろう
— ギャレス・ダビッドソン

13

Vimで編集し、set fileformatコマンドを使用します。

  • MS-DOS / Windows(CR + LFブレーク)から* nix(LFのみブレーク)

    :set fileformat=unix
    :wq
    
  • * MS-DOS / Windowsにnix

    :set fileformat=dos
    :wq
    

ファイルの最後の行に改行がない場合、それを使用するときは注意してください。vimは、指示しない方法を知らない限り、1を追加します。
— CesarB 2009年

他のすべてのソリューションを何時間も試した後、これが私が必要とした命の恩人でした。OS X Yosemiteで確認された動作hexdump -C- スティッキーではないことも確認されました- viセッションごとに設定されます
— -Techmag

8

これは、Chealionと同様に、WindowsをUnixの行末に変換するために使用するものです。

tr -d \\015 < windows > unix

ポスターは、UnixからWindowsへの行末を望んでいました。そして、あなたは答えに数年遅れています。
— ott--

5
「何年も遅れている」と誰が気にしますか?それはまだ機能し、それはまだ質問に適用可能です。私と同じように、読者に別のオプションを追加しただけです。また、彼の質問はWindows-> Unixを要求し、彼の説明はUnix-> Windowsを要求します。肩をすくめる
— ジョシュ

右。UNIXをWindowsに変換するための別のtrコマンドを追加するかもしれません。
— ott--

ダウン投票を取り消そうとしましたが、記事が編集されるまでロックされていると言いました。
— ott--

@ ott--問題ありません、私はあなたのために賛成しました。...待って、今私は私に賛成できない!... dang ... :)
— アロイスマーダル

1

POSIXでこれを行うのは難しいです。

  • POSIX Sedは\rまたはをサポートしていません\15。たとえそれが行われたとしても、インプレースオプション-iはPOSIXではありません

  • POSIX awkにはサポートしています\rと\15、しかし、-i inplaceオプションではありませんPOSIX

  • d2uとdos2unixはPOSIXユーティリティではありませんが、exは

  • POSIX exはサポートしていない\r、\15、\nまたは\12

キャリッジリターンを削除するには:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

改行を追加するには:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.