回答:
unix2dos file
この実装は挿入されないことに注意してくださいCR
すべての前にLF
のみ前に、LF
すでに1つだけが先行していないのCR
とバイナリファイルをスキップします(0x0の中でバイト値を含むものは- >が0x1F以外の範囲LF
、FF
、TAB
またはCR
)。
または使用sed
:
CR=$(printf '\r')
sed "s/\$/$CR/" file
または使用awk
:
awk '{printf "%s\r\n", $0}' file
または使用perl
:
perl -pe 's|\n|\r\n|' file
'\r'
with sed
the trick を使用することでした。
これはまさにunix2dos
そうです:
$ unix2dos file.txt
これによりfile.txt
、インプレースがCRLF行末のバージョンに置き換えられます。
でそれをしたい場合sed
は、すべての行の最後に改行を挿入できます。
sed -e 's/$/\r/' file.txt
これs
により、行末($
)の直前のゼロサイズ領域が()に置き換えられ\r
ます。インプレース置換を行うには(そうするようにunix2dos
)、を使用しますがsed -i.bak
、これは非標準の拡張機能です-持っていない場合は、一時ファイルを使用してください。
\r
交換での使用は移植できません。少なくとも、Mac OSXでは動作しません。
u2d
、ux2dos
、todos
だけでなく周りのコマンド。
Unixマシン(OS X、Linux)で変換を行う場合は、vi
またはでファイルを開きますvim
:
$ vim my-file
Escキーを押して、挿入モードになっていないことを確認してから、入力します
:set ff=dos
または
:set fileformat=dos
これは、ファイル形式を設定することにより、適切な変換を行います。
ファイルを書き、エディターを終了するには
:wq
コマンドラインで次のことができます
$ vi +':w ++ff=dos' +':q' my-file
POSIXでこれを行うのは難しいです。
POSIX Sedは\r
またはをサポートしていません\15
。たとえそれができたとしても、インプレースオプション-i
はPOSIXではありません
POSIX awkにはサポートしています\r
と\15
、しかし、-i inplace
オプションではありませんPOSIX
d2uとdos2unixはPOSIXユーティリティではありませんが、exは
POSIX exはサポートしていない\r
、\15
、\n
または\12
キャリッジリターンを削除するには:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
改行を追加するには:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
awkで試すことができます
awk '{print $0 "\r"}'
または
awk -v r=$'\r' '{print $0 r}'
$'\r'
以下のようないくつかのシェルでサポートされているとして引用ANSI-Cスタイルの一例であるksh93
、bash
、zsh
、mksh
とFreeBSD sh
とシングルUnixの仕様の問題8に含まれる可能性が高いです。
奇妙なキャラクターを表現する一般的な方法を提供します。例えば、これを試してください:
awk -v r=$'\U0001F608' '{print $0 r}'
CR
前に aを挿入しないことに注意してください。1つ(そして1つだけ)のCRがまだ先行していないLFの前にのみです。