Unixの改行は、インタラクティブなプロトタイ改行(Windows)
-
05-09-2019 - |
質問
なんだろうけど、日本人の方(例えばユーやツール)Windowsでrecurse上のディレクトリに変換すunixファイルのインタラクティブなプロトタイルです。
さん完全に嬉しい方法でユー以上を検出するunixのファイルです。
でこの単一のファイルが、私の後、ちょっとスケーラブルにする傾向Powershellish-ソリューション
解決
こちらは純粋なユ道に入っています。
発掘ファイル転につUNIX線結(ユv1):
dir * -inc *.txt | %{ if (gc $_.FullName -delim "`0" | Select-String "[^`r]`n") {$_} }
ここではどのようだとの密UNIXライングインタラクティブなプロトタイラインエンディングも追加。重要なことに注意するストラインの終 )追加されるのは、ファイルの終わりがないといラインで終わる。なので、しばらく日本にいたい、どうしたらいいでしょうかんせ"に記載のとおり、どのようにさせないように指定できますので(これは少することができます。
Get-ChildItem * -Include *.txt | ForEach-Object {
## If contains UNIX line endings, replace with Windows line endings
if (Get-Content $_.FullName -Delimiter "`0" | Select-String "[^`r]`n")
{
$content = Get-Content $_.FullName
$content | Set-Content $_.FullName
}
}
以上の作品がユー自動的に分割で内容をお下がりなが存在し、その追加 のときに書き込み各もふもふをご堪能ください(この場合ライン)へのファイルです。そこでまず、線の終末でのファイルです。
また、書いた上記のコードでのみを変更するファイルが必要です。するとき削除します。ああ、確認してくださいファイルにはForEach-オブジェクトです。以ることができんフィルタリングしたいのが始まるパイプライン
他のヒント
DOS2UNIXとunix2dosといったは Cygwinのの中にあります。
これは私のために動作するようです。
Get-Content Unix.txt | Out-File Dos.txt
ダウンロード vimのに、あなたのファイルや問題を開く
:se fileformat=dos|up
複数のファイル(C内のすべての* .txtファイル:\ tmpに - 再帰):のためのバッチ
:args C:\tmp\**\*.txt
:argdo se fileformat=dos|up
あなたは、Visual Studioを使用することができます。ファイル - >高度な保存オプション...
、Windowsでunix2dosといったための多数のスタンドアロンの実行可能ファイルがある、またはあなたが(変換のための反対方向)私の類似したを参照して、1を自分で書くことができ、質問<のhref = "HTTPS:/ /stackoverflow.com/questions/313178/whats-the-best-way-of-doing-dos2unix-on-a-500k-line-file-in-windows">hereするます。
私はサイズ10,000ファイルをループ内で上記のコードは、それらの多くは> 50キロバイトをテスト昨日と今日6時間を過ごしました。ボトムラインは、PowerShellのコードは、大きなファイルや多数のファイルには使用できない/遅い/非常に非効率的です。また、BOMのバイトを保存しません。私は、unix2dosといった7.2.3は、最速かつ最も現実的な解決策であることが判明しました。これは他の人を助け、彼らに時間を節約できます願っています。
ワードパッドでのUnixの改行コードでファイルを開くと、それはDOSなど、すべての行末を書き換えるます保存。ビット大量のファイルのために骨の折れる、それはたまにでいくつかのファイルのために十分に機能します。
これは、私の作品ます:
Get-ChildItem -Recurse -File | % { $tmp = Get-Content $_; $tmp | Out-File "$_" -Encoding UTF8 }
これはどのように(負の後読み付き)。 -nonewlineがなければ、セット内容は、一番下に余分な `r`nを置きます。括弧を使用すると、同じファイルを変更することができます。
function unix2dos {
(Get-Content -raw $args[0]) -replace "(?<!`r)`n","`r`n" |
set-content -nonewline $args[0]
}
リバースは、UNIXのテキストにこの、窓のようになります。
function dos2unix {
(Get-Content -raw $args[0]) -replace "`r`n","`n" |
set-content -nonewline $args[0]
}
例:
unix2dos file.txt
dos2unix file.txt
Emacsを持っている場合は、、あなたはESC-XのHEXLモードでそれを確認することができます。メモ帳が正しく、UNIXのテキストは表示されません。 -replaceはpspathを消去するので、私は、セット内容のパスを指定する必要があります。