実行したいWindowsでいくつかのシェルスクリプトを作成していますdos2unix
それらの上に。
しかし、私がそれを読んだようにdos2unix
はLinux環境で機能するので、Windowsでの作業中にファイルをUNIX形式に変換する方法はありますか?
CYGWINをすでにインストールしていますが、次のようないくつかの問題に直面しています。
Administrator@SGH735082N ~
$ pwd
/home/Administrator
Administrator@SGH735082N ~
$ cd C:\CVS Code
Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix BLPDB000
BLPDB000:
dos2Unix processing BLPDB000: No such file or directory
Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix -h
dos2Unix: bad argument -h: unknown option
Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix --help
dos2Unix version 0.1.3
converts the line endings of text files from
DOS style (0x0d 0x0a) to UNIX style (0x0a)
Usage: dos2Unix [OPTION...] [input file list...]
Main options (not all may apply)
-A, --auto Output format will be the opposite of the autodetected source
format
-D, --u2d Output will be in DOS format
--unix2dos Output will be in DOS format
-U, --d2u Output will be in UNIX format
--dos2unix Output will be in UNIX format
--force Ignore binary file detection
--safe Do not modify binary files
Help options
-?, --help Show this help message
--usage Display brief usage message
--version Display version information
--license Display licensing information
Other arguments
[input file list...] for each file listed, convert in place.
If none specified, then use stdin/stdout
Administrator@SGH735082N /cygdrive/c/CVS
$
Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix -oBLPDB000
dos2Unix: bad argument -oBLPDB000: unknown option
Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix -k BLPDB000
dos2Unix: bad argument -k: unknown option
Administrator@SGH735082N /cygdrive/c/CVS
$ dos2Unix BLPDB000.txt
BLPDB000.txt:
dos2Unix processing BLPDB000.txt: No such file or directory
Administrator@SGH735082N /cygdrive/c/CVS
$ pwd
/cygdrive/c/CVS
Notepad ++ を使用できます。
ディレクトリを再帰的に変換する手順は次のとおりです。
少なくとも2つのリソースがあります。
Perl
がインストールされている場合は、次のコマンドを実行するだけです。
Perl -i -p -e "s/\r//" <filename> [<filename2> ...]
私は grepWin を使用しました:
\r\n
\n
Cygwinで非常に古いdos2unixバージョンを使用しています。 Cygwin 1.7はdos2unixの新しいバージョンに変更されました。これは、約2年前にほとんどのLinuxディストリビューションに同梱されているものと同じです。したがって、Cygwinのセットアッププログラムを使用してdos2unixを更新します。バージョン6.0.3を入手していることを確認します。
利用可能なdos2unixのネイティブWindowsポート(win32およびwin64)もあります。 http://waterlan.home.xs4all.nl/dos2unix.html を参照してください
よろしく、
PowerShellには、.NETプラットフォームの多くのツールを考えると、非常に多くのソリューションがあります。
$file = 'path\to\file'
のファイルへのパスを使用して、
[IO.File]::WriteAllText($file, $([IO.File]::ReadAllText($file) -replace "`r`n", "`n"))
または
(Get-Content $file -Raw).Replace("`r`n","`n") | Set-Content $file -Force
すべてのファイルに対してこれを行うには、ファイルリストを上記のコマンドにパイプします。
Get-ChildItem -File -Recurse | % { (Get-Content -Raw -Path $_.Fullname).Replace ("`r`n", "`n") | Set-Content -Path $_.Fullname }
見る
大きなファイルの場合は、バッファリングソリューションを使用することをお勧めします powershellを使用してCRLFを置き換える
Windowsの優れたテキストエディタは、改行だけを行の終端としてテキストファイルの保存をサポートしています。
テキストファイルをDOS/WindowsからUNIXの行末に自動変換するには、バッチファイル JREPL.BAT を使用できますDave Benhamによって記述され、バッチファイルです/ Windows XPでも動作するJScriptを使用してファイルで正規表現置換を実行するJScriptハイブリッド。
次の例を使用して、単一のファイルをDOS/WindowsからUNIXに変換できます。
jrepl.bat "\r" "" /M /F "Name of File to Modify" /O -
この場合、改行はすべてファイルから削除されて変更されます。もちろん、"\r\n"
を検索文字列として使用し、"\n"
を置換文字列として使用して、ファイルに改行が含まれていないはずの場所に改行が残っている場合は、改行に残っている改行のみを削除することもできます。行末記号の変換時に削除されます。
ディレクトリの複数のファイルまたはディレクトリツリー全体は、コマンド[〜#〜] for [〜#〜]を使用してDOS/WindowsからUNIXテキストファイルに変換できます[〜# 〜] call [〜#〜]バッチファイルJREPL.BATワイルドカードパターンに一致する各ファイル。
現在のディレクトリにあるすべての* .shファイルをDOS/WindowsからUNIXに変換するバッチファイルの例。
@for %%I in (*.sh) do @call "%~dp0jrepl.bat" "\r" "" /M /F "%%I" /O -
バッチファイルJREPL.BATは、このコマンドラインを含むバッチファイルと同じディレクトリに保存する必要があります。
使用するコマンドとその機能を理解するには、コマンドプロンプトウィンドウを開いて次のコマンドを実行し、各コマンドに対して表示されるすべてのヘルプページをよく読みます。
jrepl.bat /?
call /?
for /?
Notepad ++で解決しました。
移動:編集-> EOL変換-> Unix。