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


38

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

このユーティリティは、LinuxではなくWindows上で実行する必要があります。私はすでに移動しています。Cygwinを避けることができれば、インストールしたくないです。


1
関連:参照superuser.com/questions/38744 superuser.com/questions/27060 superuser.com/questions/52044 ...それらに言及したすべてのツールは、あなたが何をしたいかを達成するために逆にすることができる
いんちきキホーテ

重複質問
ukanth

いわゆる重複質問のソリューションはすべてLinuxプラットフォームで実行されるか、逆の変換を実行します。Linuxはもうありません。窓があります。
マシュースカウテン

1
これらはすべて、Cygwin、GnuWin32、UnxUtilsなどを介してWindowsで使用できます。リンクを提供するのに十分な知識がありませんが、これを行うことができるPowershellスクリプトもあると思います。
いんちきのキホーテ2009年

1
@quack:この質問は、ユーザーがWindowsユーティリティを使用してWindowsでジョブを実行するものを探していることを具体的に示しています。
ブライアンレイシー

回答:


34

unix2dosLinuxプラットフォームのユーティリティを使用して変換できます。ありますunix2dos Windowsのために利用可能なバージョンは、と同様に。

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

perl -p -e 's/\n/\r\n/' < UNIX_LF.txt > WINDOWS_CRLF.txt

これと似たようなことをしましたが、Pythonを使用しました。
マシュースカウテン

2
@Matthew Scouten:だから...あなたはWindows上で実行されるUNIXユーティリティを見つけました!おめでとうございます!
いんちきのキホーテ2009年

8
はいといいえ。私は自分のブラストユーティリティを書きました。最初からこれを行うこともできましたが、30分節約したいと思っていました。残念ながら、利用可能なユーティリティには満足できませんでした。ディレクトリ内の任意のバイナリファイルが破損していることがわかりました。
マシュースカウテン

dos2unixとunix2dosの変換には問題があります-ファイルにCRLFとLFが混在している場合、置き換えられない可能性があります。
pbies

17

これは簡単で迅速な方法です。

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


2
hehe ...この答えは私を
笑わせた

IEを含むすべてのブラウザは、Unixの行末を問題なく読み取ることができます。しかし、それでもワードパッドはそれを行うことができ、現代のメモ帳も同様です。ここで重要なのは、複数のファイルを自動的に変換する方法です
-phuclv

10

フォルダーを再帰的に調べ、ファイルフィルターを許可し、「\ r \ n」を簡単に検索して「\ n」だけに置き換えるのに最適なのはNotepad ++ですです。

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


8
あなたはそこでエンディングを逆にしたと思います:Linuxは\ n、windowsは\ r \ n
マシュースカウテン

10
Notepad ++には、Edit -> EOL Conversion変換するファイルの数が少ない場合のシンプルなメニューもあります。
-user1071136

8

Swiss File Knifeを使用します

たとえばsfk addcr -dir . -file .txt -norec
、現在のディレクトリのすべての.txtファイルで、LFの末尾をCR / LFに変更しますが、サブディレクトリ内ではありません(再帰なし)。

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


私は指定していない-norec私は、再帰が起こるしたいので、それはそれのように見えるしていません
チャバ・トス

6

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

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

u2d filename

Unix CR形式に戻す:

d2u filename

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

楽しい!リック


これは時々呼び出されるdos2unixunix2dos、u2dまたはd2uとして見つからない場合に使用されます。またありますunix2mac
gtatr

3

私はこのソリューションをそこに放り出します。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

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

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です。ファイルが削除されているので、バックアップすることをお勧めします)アップ。


1

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


Linuxに切り替えているときに逆の問題が発生したとき、彼らはそう言いました。間違った行末で問題が発生するツールを使い続けました。NOTHINGは、混合行末を合理的に処理します。
マシュースカウテン

@マシュー私はサイトがUnix / Windowsの行末を正しく処理することを知っています。ホストシステムでファイルを編集するときにLinuxで実行するWindows VMでその目的に使用します。
-nelaaro

あなたが推薦するエディターは問題なく動作すると確信しています。しかし、ある時点で、テキストファイルを他のツールにフィードする必要がありますが、そのツールはそうではありません。その時点で、物事をうまく処理するテキストエディターを使用すると、問題を隠すことで事態が悪化します。そして、私はそれがまだ混合エンディングをひどく(または少なくとも奇妙に)処理していると確信します。
マシュースカウテン

1
ライの終わりを変換するためのnotepad ++オプションの+1。より具体的な方法は次のとおりです
wip

Notepad ++には既に、行末やエンコーディングなどを変換するソリューションがあります
-phuclv

0

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

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

これにはプログラマーファイルエディターを使用しましたが、Notepad ++でも使用できます。ワードパッドも便利です(少なくとも、LFで終了したファイルを表示する場合)。

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


この方法の問題は、一度に1つのファイルしか実行しないことです。
マシュースカウテン

「unix-touched files」は、LFのみのファイルと混合CRLF-LFファイルの両方を指す私の言葉です。unix-oidツールでファイルを編集すると、LFのみの行で「感染」する傾向があります。
マシュースカウテン

2
私が本当に言っていたことは、テキストファイルを表示するための適切なソフトウェアを選択することで、それらをまったく変換する必要がないということでした。ところで、CRLFで終了したファイルを「適切な」ものとして説明するタスクにあなたを連れて行くことは避けました。それはあなたの視点に完全に依存します。各メソッドは、独自のOSで適切です。ファイルを別のOSに移動すると、Win / Mac / Linuxはすべて異なることがわかります。私は、Unix / Linux方式が元のものであると疑っています。
パビウム2009年

3
あなたは間違っていると疑います。ASCII標準は、もともとテレタイプマシン用に開発され、CRLFが義務付けられていました。ほとんどのインターネットプロトコル(HTTP、SMTP、FTP、IRCなど)もCRLFの末尾を必要とします(ほとんどの実装は、非準拠のUnixプログラムとの互換性のためにベアLFを受け入れます)。この場合、Windowsは標準に従っており、UnixとMacはそれを破っています。
マシュースカウテン

0

より多くのオプションを提供するには(私はuser45832のハックの答えを最も楽しんだとしても)

オンラインコンバーター

GUI FTPプログラム が自動的にそれを行うと思います

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

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

パワーシェル:

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

ここから最後の2つ手に入れた


0

AWK for Windowsを入手してください。

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

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

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

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

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

ソース


0

ウィキペディアでは、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)

VBScriptJScriptでこれを実行することもできます。これは、サードパーティアプリケーションをインストールせずにWindowsで既に利用可能なツールでもあります。


0

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


OPはWindowsツール
-phuclv

-2

私は以前「編集」でファイルを開いて、ジョブが完了したものとして保存していました...


「編集」とは何ですか?Windows 10にはそのようなツールはありません
phuclv


明らかにeditDOSで使用しましたが、この質問はWindows
-phuclv

1
edit以前はWindowsの一部でしたWindows XP。私の答えは約8歳です。その時点ではedit、多くの場合、Windowsのインストールの一部...だった
ラデク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.