2011-08-08 10 views
5

Windows上でsedを使用して、余分な行をUNIX形式の書式(\ n行末)で削除しています。残念ながら、sedはこれらの行末を\ r \ nに変更しない行でも置き換えます。 sedのやり方をどうやって止めることができますか?私のsedのWindows上でsedを停止して r nを r nに変更します

はsedの-ため-Windowsのスタンドアロン-exeファイルに簡単です:

C:\dev>sed --version 
super-sed version 3.59 
based on GNU sed version 3.02.80 

答えて

3

私はWindows上でのsedしかし、あなたがしようとしていることをあなたがすることができるかわからない:

unix2dos you_file 
sed ... 
dos2unix you_file 
+0

私がunix2dosといったを知っている...私はsedの最初で、私のファイルを処理して、unix2dosといったを使用してそれらを解析する必要はありません。 \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n \ n – mort

2

申し訳ありませんが、sedは好きなように動作していないようです。つまり、sed!= awk(これは設定可能です)。

私はssed executableをダウンロードしました。ヘルプ出力にはこれについてのオプションは記載されていませんでした。ご存じでしょうか?

source codeを修正するか、著者に連絡することができます。

ソースコードにNEWSファイルを通して読むと、私はあなたのスクリプトの最後のコマンドとして `に/ \ R //」をのを試してみました

* The s/// command now understands the following escape (in both halves): 
\a an "alert" (BEL) 
\f a form-feed 
\n a newline 
\r a carriage-return 
\t a horizontal tab 
\v a vertical tab 
\oNNN a character with the octal value NNN 
\dNNN a character with the decimal value NNN 
\xNN a character with the hexadecimal value NN 

を見つけましたか?

私はほとんどのテキストファイルでクイックスキャンを行いましたが、必要なものを提供するcmd-lineオプションがあると信じられるようなものは見つかりませんでした。

それはどうかと思われるようあなたは、sheerest楽観の行為として、私はそれらの厄介な「\ Rの

最後に
sed -i -f yourSedScript yourFile 
mv yourFile yourFile.wrk 
tr -d '\015' yourFile.wrk > yourFile 

を一掃するためにTRを使用するオプションを提供し、unix2dosといったを使用したくないのでWindowsのUnixファイルを編集している場合は、UnixをWindowsにするために 'ftp'などのファイルを転送する必要があります。なぜなら、ftpオプションを使用して改行を変換するのはなぜですか?

こちらがお役に立てば幸いです。

+0

私はファイルを転送していません。私はWindowsマシンで作業していますが、Unixスタイルの改行を持つC++ Builder固有のファイル(.dfm)を編集しています。 sedは各行の最後に\ r \ nを再び付けるので、 's/\ r // 'は機能しません – mort

7

GNU sed(http://gnuwin32.sourceforge.net/packages/sed.htm)には、「バイナリモード」の-bオプションがあります。 e。 \ nを\ r \ nに置き換えないでください。

cygwinに付属のsedを使用すると、通常-bオプションを指定しなくてもバイナリモードが使用されます。つまり、cygwinコマンドは、入力ファイルパスを使用して、テキストモードで実行するかバイナリモードで実行するかを決定します。 e。 \ r \ nまたは\ n:http://www.cygwin.com/cygwin-ug-net/using-textbinary.htmlを出力しています。 ドキュメントによると、バイナリモードはMS-DOSパス名のデフォルトであり、私の経験上、デフォルトでマウントされたファイルシステムもバイナリモードでマウントされています。

1

-bパラメータを追加すると、バイナリファイルとして扱われ、行末は変更されません。 手動状態:

-b, --binary 

      open files in binary mode (CR+LFs are not processed specially) 
関連する問題