web-dev-qa-db-ja.com

Unixの行末をWindowsに変換する

最近LinuxからWindowsに戻りました。 CRLFを含むファイル、LFを含むファイル、および混在しているファイルがあります。 Unixで処理されたすべてのファイルを見つけ、適切なCRLF終了ファイルに変換するのに役立つユーティリティはありますか?

ユーティリティは、LinuxではなくWindowsで実行する必要があります。もう引っ越しました。回避できれば Cygwin をインストールしたくありません。

38
Matthew Scouten

Linuxプラットフォームのunix2dosユーティリティで変換できます。 unix2dosWindowsで利用可能なバージョン もあります。

Perlがインストールされている場合は、次の1つのライナーも使用できます。

Perl -p -e 's/\n/\r\n/' < UNIX_LF.txt > WINDOWS_CRLF.txt
35
John T

ここに簡単で迅速な方法があります。

テキストファイルをChrome(他のブラウザについては知りません))にドラッグアンドドロップしてから、元のファイルにカットアンドペーストします:)

17
user45832

フォルダーを再帰的に処理し、ファイルフィルターを許可し、 "\ r\n"の単純な検索を許可し、 "\ n"だけで置き換えるのに最も適しているのは Notepad ++ でした。

Notepad ++は、Windowsに最適な無料のオープンソースのメモ帳プログラムの1つです。とてもシンプルでパワフルです。それは行末の検索/置換をうまく処理しました。請負業者はLinuxの行末で.cおよび.hファイルの束をリポジトリにチェックインしますが、ほとんどの人はWindows/Eclipseビルドツールで標準化しているため、ファイルは行末が変換されるまでビルドされません。

10
Matt

スイスファイルナイフ を使用します。

例えば: sfk addcr -dir . -file .txt -norec
changes LF WindowsのCR/LFで終わる、現在のディレクトリのすべての.txtファイルで、サブディレクトリ内ではない(再帰なし)。

しかし、このプログラムはそれだけではありません。

9
harrymc

Cygwinでは、2つの組み込みユーティリティを使用して、Unixと "DOS" AKA Windowsファイルを変換できます。

DOS CR/LF形式に変換します。

u2d filename

Unix CR形式に変換します。

d2u filename

ファイルは同じ名前のまま残ります。

楽しい!リック

6
Rick V

私はこの解決策をそこに捨てます。 Gitがこれを行います。 それについてはこの投稿を参照してください

理論的には、これを実行してツリー全体を変換できます

cd root/of/tree
git init .
git add .
git commit -m "initial commit"
echo "* text eol=crlf" > .gitattributes
git rm --cached -r .
git reset --hard

逆にしたい場合は、crlflfに変更します。注:まだ完了していません。読み続けてください

git statusと入力して、影響を受けるファイルを確認します。次のような行を追加する必要があるかもしれません

*.jpg binary
*.png binary
*.gif binary

.gitattributesなどに変換して、特定のファイルの変換を回避します。特定のファイルをテキストとして明示的にマークすることもできます

*.md text
*.css text

次に、.gitattributesを編集した後、これらの2行を繰り返します。

git rm --cached -r .
git reset --hard

次に、再度git statusを使用して、変更されるファイルを確認します。影響を受けるすべてのファイルがgit statusにリストされていることを確認したら、コミットします

git add .
git commit -m "normalize line endings"

すべてのファイルをもう一度チェックアウトします

git rm --cached -r .
git reset --hard

彼らは今あなたの望む行末が何であっても持っているはずです

**注:すでにgitを使用している場合は、最初の3つのコマンドgitコマンドをスキップしてください。 gitを使用していない場合は、.gitattributesファイルと.gitフォルダーを削除できます。

**ファイルをバックアップします:git rm --cached -rはそれらをすべて削除します(理論的にはgitリポジトリ(.gitフォルダー)にありますが、これは最後のコマンドgit reset --hardによって復元される方法です)。ファイルが削除されているので、バックアップすることをお勧めします。

3
gman

SciTE のような両方の行末を理解するテキストエディターを使用します。または、すべてのファイルですべての行末を変換する必要はないが、単に望まない場合は、 Notepad ++ のようにします。ファイル全体を最初の行にまとめて表示します。

1
nelaaro

Get AWK for Windows

Unixの行末をWindowsの行末に変換します。

awk 'sub("$", "\r")' unixfile.txt > winfile.txt

Windowsの行末をUnixの行末に変換します。

awk '{ sub("\r$", ""); print }' winfile.txt > unixfile.txt

awkの古いバージョンには、sub関数が含まれていません。そのような場合は、同じコマンドを使用しますが、awkgawkまたはnawkに置き換えます。

ソース

0
Neeme Praks

TEXTファイルのeoln文字を翻訳するには多くの方法があり、誰もがお気に入りです。

しかし、私は常にバイナリモードでLinuxからWindowsにファイルを転送し、その後、両方のタイプを開き、必要に応じていずれかの形式で保存できるエディターでTEXTファイルをWindowsで開きます。

私はこれにProgrammers File Editorを使用しましたが、Notepad ++でも実行できます。ワードパッドも便利です(少なくとも表示 LF終了ファイルの場合)]。

Linuxで作成された可能性があり、Windowsの(事実上の標準)の世界で読み取り可能である必要がある単純なテキストファイルを考えています。 「unix-touched files」が何を意味するのかわかりません。

0
pavium

Wikipedia cmdに解決策があります:

TYPE unix_file | FIND /V "" > dos_file

PowerShellでは、 この質問 で行われたことを逆にすることでそれを行うさまざまな方法があります。

(Get-Content $file -Raw).Replace("`n", "`r`n") | Set-Content $path -Force

(Get-Content $infile) -join "`r`n" > $outfile

$text = [IO.File]::ReadAllText($original_file) -replace "`n", "`r`n"
[IO.File]::WriteAllText($original_file, $text)

VBScript および JScript でもこれを行うことができます。これらは、サードパーティのアプリケーションをインストールしなくてもWindowsですでに利用可能なツールでもあります。

0
phuclv

私のLinuxディストリビューションには、このタスクに使用するfromdosおよびtodosという2つの小さなユーティリティがあります。

0
geek

より多くのオプションを提供するには(私が一番楽しんだとしても ser45832のハック回答 ):

オンラインコンバーター

GUI FTPプログラムだと思います自動的に実行されます

バッチ/ DOSワンライナー(空の行を削除)

FOR /F "eol= delims= usebackq" %a IN (infile.txt) DO (ECHO %a>> outfile.txt)

Powershell:

gc infile.txt | %{$_.split("`n")} | Out-File outfile.txt

最後の2つを得た ここから

0
gregg