1. ホーム
  2. windows

[解決済み] 行末を保持する

2022-08-18 02:47:08

質問

Windows で sed を実行して置換を行うのですが、行末が自動的に Unix (\n) に変換されることに気づきました。sed に Windows の行末 (\rn) を使用するように指示するオプション、あるいはさらに良いことに、ファイルから行末を保存するオプションはありますか?

注:私はunxutilsからsedを使用しています。 http://unxutils.sourceforge.net/

どのように解決するのですか?

を使用することができます。 -b オプションを使用すると、ファイルをバイナリとして扱えるようになります。 これにより、Windows上のcygwinのsedの問題が解決されます。

例として sed -b 's/foo/bar/'

行末にマッチさせたい場合は、オプションのキャリッジリターンを忘れずにマッチ、キャプチャ、コピーしてください。

sed -b 's/foo\(\r\?\)$/bar\1/'

から sedマニュアルページ :

<ブロッククオート

-b -バイナリ

このオプションはすべてのプラットフォームで利用可能ですが、オペレーティング システムがテキスト ファイルとバイナリ ファイルを区別している場合にのみ有効です。MS-DOS、Windows、Cygwinのように区別されている場合、テキストファイルはキャリッジリターンとラインフィード文字で区切られた行で構成されており、sedは最後のCRを見ません。このオプションが指定された場合、sedは入力ファイルをバイナリモードで開き、この特別な処理を要求せず、行末を改行文字とみなします。