web-dev-qa-db-ja.com

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

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

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

33
alexeit

おそらく、ディストリビューションに応じて、dos2unixunix2dostodos、またはfromdosを探しています。 Ubuntu-Debianパッケージtodos/fromdostofrodosパッケージの一部としてメモリから。

42
saschabeaumont

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

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

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

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

_tr -d '\r' < infile > outfile_ Windowsから移動-> Unix
awk 'sub("$", "\r")' unixfile.txt > winfile.txtからUnixに移動-> Windows trはUnixからWindowsに移動できないため。

24
Chealion

Vimで編集し、set fileformatコマンド。

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

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

    :set fileformat=dos
    :wq
    
13
nedm

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

tr -d \\015 < windows > unix
8
Josh

POSIXでこれを行うのは注意が必要です。

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

  • POSIX Awk\rおよび\15をサポートしていますが、-i inplaceオプションはPOSIXではありません

  • d2uおよびdos2unixPOSIXユーティリティ ではありません、ただし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
1
Steven Penny