dos与unix资料相互转换的几种方法

dos与unix文件相互转换的几种方法
http://www.cyberciti.biz/faq/howto-unix-linux-convert-dos-newlines-cr-lf-unix-text-format/


DOS与Unix文件格式的区别在于换行符不同,前者为CR/LF(回车/换行),后者是只有一个LF(换行),直接读取的话,在一些编辑器上会显示不太正常,比如在vim上,dos文件有可能在行尾带上^M

有很多方法可以完成转换

dos2unix --  包含了一系列的工具, dos2unix, unix2dos, mac2unix, unix2mac,没有mac2dos?,你可以mac2unix 再 unix2dos
sed -- 万能工具
tr -- 简单
perl one liner -- 强大的perl

假定需要转换的文件为input.txt

#dos2unix
dos2unix input.txt
dos2unix -b input.txt # 会生成一个input.txt.bak的备份文件
#unix2dos
unix2dos input.txt
unix2dos -b input.txt # 会生成一个input.txt.bak的备份文件


tr -d '\r' < input.txt > output.txt  # tr无法完成反向转换即unix2dos,因为tr不能够完成复杂的替换


#unix2dos
sed 's/$'"/`echo \\\r`/" input.txt > output.txt
#dos2unix
sed 's/^M$//' input.txt > output.txt


perl -pi -e 's/\r\n/\n/g' input.txt
perl -pi -e 's/\n/\r\n/g' input.txt