sed使用之unix与doc文本格式转换

文本文件,在linux(unix)平台下的回车换行是以 ‘\n’ 表示的,而在window平台下的回车换行是 ‘\r\n' 表示

如果不加以转换,linux(unix)文本文件在window下阅读是完全没有分行的,排版全乱了,window文本文件在linux下阅读在每一行后都有'^M'字符

为了在不同平台下查看的方便,往往需要把两种形式相互转换。(需要注明的是,稍微高级一点的文本阅读器都已经支持自动识别并统一显示处理)。

博主正在学习sed,因此本博文主要尝试以sed命令实现两种格式的转换。如果有其他需要,请参考下面链接:http://blog.csdn.net/fan_hai_ping/article/details/8352087

博主测试的系统:ubuntu 14.4 32位

====================================================================================

最直接的命令如下:

DOS转UNIX:$ sed -i ’s/\r//’ dosfile2unixfile.txt

UNIX转DOS:$ sed -i 's/$/\r/' unixfile2dosfile.txt

结果如下图:

unix下:

sed使用之unix与doc文本格式转换_第1张图片

转为dos后(需要说明的是,由于vim已经自动识别dos的回车换行,因此正常显示,只在图片最后一行标注了[doc]的格式):

sed使用之unix与doc文本格式转换_第2张图片

特别注意,这两句命令并不会自动判断文件原先的格式,举个例子,假设文件本来就是doc格式的了,你却再执行一次unix2doc,后果就是会有多个\r,显示为多个'^M':

正常:'\n' => '\r\n'

异常:'\r\n' => '\r\r\n'

如图:

sed使用之unix与doc文本格式转换_第3张图片

于是,根据自己所学,得出以下的改良版本:


====================================================================================

仅此而已?当然不!同样是用sed的不同使用方法,我写了个unix2doc.sh的脚本,如下:

sed使用之unix与doc文本格式转换_第4张图片

这个脚本其实是有缺陷的,对偶数行能成功执行,对单数行,会遗留最后一行没有转换。这个缺陷,如果是你,你会如何解决?多动手尝试才能进步的,我就不放出我的解决办法啦。

你可能感兴趣的:(Linux)