文本文件,在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下:
文章图片
转为dos后(需要说明的是,由于vim已经自动识别dos的回车换行,因此正常显示,只在图片最后一行标注了[doc]的格式):
文章图片
特别注意,这两句命令并不会自动判断文件原先的格式,举个例子,假设文件本来就是doc格式的了,你却再执行一次unix2doc,后果就是会有多个\r,显示为多个'^M':
正常:'\n' => '\r\n'
异常:'\r\n' => '\r\r\n'
如图:
文章图片
于是,根据自己所学,得出以下的改良版本:
文章图片
====================================================================================
仅此而已?当然不!同样是用sed的不同使用方法,我写了个unix2doc.sh的脚本,如下:
文章图片
这个脚本其实是有缺陷的,对偶数行能成功执行,对单数行,会遗留最后一行没有转换。这个缺陷,如果是你,你会如何解决?多动手尝试才能进步的,我就不放出我的解决办法啦。
【sed使用之unix与doc文本格式转换】
推荐阅读
- Linux|109 个实用 shell 脚本
- linux笔记|linux 常用命令汇总(面向面试)
- Linux|Linux--网络基础
- linux|apt update和apt upgrade命令 - 有什么区别()
- linux|2022年云原生趋势
- Go|Docker后端部署详解(Go+Nginx)
- 开源生态|GPL、MIT、Apache...开发者如何选择开源协议(一文讲清根本区别)
- GitHub|7 款可替代 top 命令的工具