Joh*_*ant 12 unix cross-platform sed
我试图做这个问题的反面,用Windows行结尾替换Unix行结尾,这样我就可以使用SQL Server bcp over samba来导入文件.我sed安装但没有dos2unix.我试图扭转这些例子但无济于事.
这是我正在使用的命令.
sed -e 's/\n/\r\n/g' myfile
Run Code Online (Sandbox Code Playgroud)
我执行了这个然后跑了od -c myfile,期待看到\r\n以前的位置\n.但是一切都还在\n.(或者至少他们看起来是.od的输出溢出了我的屏幕缓冲区,所以我没有看到文件的开头).
我无法弄清楚我做错了什么.有什么建议?
dla*_*lin 17
面对这个时,我使用一个简单perl的单行:
perl -pi -e 's/\n/\r\n/' filename
Run Code Online (Sandbox Code Playgroud)
因为sed行为各不相同,我知道这很有效.
Jon*_*ler 11
dos2unix进入机器有什么问题?sed或常规的非GNU sed吗?在Solaris上,/usr/bin/sed需要:
sed 's/$/^M/'
Run Code Online (Sandbox Code Playgroud)
我输入'^ M'的地方controlV controlM.'$'匹配在行尾,并用control-M替换行尾.你也可以编写脚本.
期望sed扩展' \r或' \\r到控制-M的机制充其量只是平台特定的.
你不需要这个-e选项。
$匹配结束字符。此sed命令将\r在行尾插入一个字符:
sed 's/$/\r/' myfile
Run Code Online (Sandbox Code Playgroud)