ITPub博客

首页 > Linux操作系统 > Linux操作系统 > DOS/Windows 格式的文本转换成可信赖的 UNIX 格式

DOS/Windows 格式的文本转换成可信赖的 UNIX 格式

原创 Linux操作系统 作者:syzxlyx_cu 时间:2009-09-28 11:58:01 0 删除 编辑

DOS/Windows 格式的文本转换成可信赖的 UNIX 格式2008年12月03日 星期三 10:50最近在调试脚本的时候发现总是有问题,经过一番查找终于发现问题原因,原来是在windos下写的脚本每行都末都带有^M (回车换行符),解决办法:

一:DOS/Windows 格式的文本转换成可信赖的 UNIX 格式

1. $ sed -e 's/.$//' mydos.txt > myunix.txt


该脚本的工作原理很简单:替代规则表达式与一行的最末字符匹配,而该字符恰好就是回车。我们用空字符替换它,从而将其从输出中彻底删除。如果使用该脚本并注意到已经删除了输出中每行的最末字符,那么,您就指定了已经是 UNIX 格式的文本文件。也就没必要那样做了!

2.   :%s/^M//g

上面的 ^M 是 Ctrl 一直按著, 先按 V, 再按 M, 就可以看到 ^M 了 看到了以後 請把 ctrl 放掉

3. col -bx < input_filename > output_filename

输入与输出文件名不要相同

4. :set ff=unix (先:set ff? 查看格式)

强制转换dos格式为unix格式

二:相同unix格式转换为dos格式:

$ sed -e 's/$/\r/' myunix.txt > mydos.txt

在该脚本中,'$' 规则表达式将与行的末尾匹配,而 '\r' 告诉 sed 在其之前插入一个回车。在换行之前插入回车,立即,每一行就以 CR/LF 结束。请注意,仅当使用 GNU sed 3.02.80 或以后的版本时,才会用 CR 替换 '\r'。如果还没有安装 GNU sed 3.02.80,请在我的 第一篇 sed 文章中查看如何这样做的说明

三:利用sed 做带字符替换命令:

sed -i 's#WORKHOME=/home/#WORKHOME=/home/mapdir/map#g'

上面的命令把WORKHOME=/home/替换为WORKHOME=/home/mapdir/map

sed -i 's#-s -f#-s#g' 或者 sed -i 's/-s/-s -f/g'

把-s 替换为 -s -f
 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20542911/viewspace-615771/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-09-28

  • 博文量
    125
  • 访问量
    124464