Linux中doc文本格式转化,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下:

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

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

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

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

如图:

0818b9ca8b590ca3270a3433284dd417.png

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

0818b9ca8b590ca3270a3433284dd417.png

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

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

0818b9ca8b590ca3270a3433284dd417.png

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值