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


33

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

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

回答:


42

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


4
Windowsソリューションを探している人がこの質問に出くわした場合、アップストリームサイトdos2unixwaterlan.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

  • d2udos2unixPOSIXユーティリティではありませんが、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.