新しい行でのみ機能するファイルがあり、すべての新しい行で機能するには\n
このファイルが必要です。\r\n
どうすればいいですか?
たとえば、Vimを使用してこの問題を解決しましたが、:%s/\n/\r\n/g
スクリプトまたはコマンドラインアプリケーションを使用したいと思います。どんな提案がありますか?
sed
orを使ってthisを見つけようとしましたが、grep
エスケープシーケンスの回避策にすぐに混乱しました(私はこのコマンドに最初に触れました)。
興味があれば、このアプリケーションは私の質問/回答に関連しています。ここ
答え1
あなたはそれを使用することができますUNIX2DOS(Debian で発見):
unix2dos file
この実装は、CR
すべてのsの前にaを挿入せず、まだ1が前に来ていないsのみをLF
挿入し、バイナリファイル(0x0 -> 0x1fの範囲のバイト値を含むファイルを除く)をスキップします。 、、、または)。LF
CR
LF
FF
TAB
CR
または以下を使用してくださいsed
。
CR=$(printf '\r')
sed "s/\$/$CR/" file
または以下を使用してくださいawk
。
awk '{printf "%s\r\n", $0}' file
または:
awk -v ORS='\r\n' 1 file
または以下を使用してくださいperl
。
perl -pe 's|\n|\r\n|' file
答え2
答え3
Unixシステム(OS X、Linux)から変換する場合は、vi
次のファイルを使用または開きますvim
。
$ vim my-file
ESCキーを押して挿入モードでないことを確認し、次のように入力します。
:set ff=dos
または
:set fileformat=dos
これは適切な変換のためのファイル形式を設定します。
ファイルに書き込んでエディタを終了するには、次のようにします。
:wq
コマンドラインでできること
$ vi +':w ++ff=dos' +':q' my-file
答え4
移植可能なシェル関数は次のことができます。
u2dos() (set -f; IFS='
'; printf '%s\r\n' $(cat "$1"))
だからあなたはこれを行うことができます:
u2dos file >dosfile