我有一个仅用于新行的文件\n
,但我需要它\r\n
用于每个新行。我怎样才能做到这一点?
例如,我使用 Vim 解决了这个问题:%s/\n/\r\n/g
,但我想使用脚本或命令行应用程序。有什么建议么?
sed
我尝试使用or查找此内容grep
,但我立即对转义序列解决方法感到困惑(我对这些命令有点陌生)。
如果有兴趣,该申请与我的问题/答案相关这里
答案1
您可以使用UNIX2DOS(在 Debian 上找到):
unix2dos file
请注意,此实现不会CR
在 every 之前插入 a LF
,仅在那些LF
前面尚未有 1 (且只有一个)的 s 之前插入CR
,并且将跳过二进制文件(包含 0x0 -> 0x1f 范围内的字节值的文件,除了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
一个可移植的 shell 函数可以执行此操作:
u2dos() (set -f; IFS='
'; printf '%s\r\n' $(cat "$1"))
这样你就可以这样做:
u2dos file >dosfile