上网Google搜索了一下只发现一个结果:
来自Thunder Bird linux文件中的^M问题
原文:
当在windows和linux之间进行文件交互时,常常会发生linux在文件的每行结尾都加上一个^M,就是linux下的换行符,非打印字符,但占有一个单位的长度,所以在处理字符串时要注意,可以用perl中的正则表表达式将其替换掉,但^M输入时不能直接输入,要通过Ctrl+V然后CTRL+M来输入:
while(
{
chomp;
s/^M$//;
}
明天上班之后试试看
今日公司论坛上有人提供更简便的方法,命令如下:
find . -type f \! -exec dos2unix {} \;
仔细研究了一下
造成这个问题的主要原因是系统底层语言环境以及传输工具造成的
在用CVS更新时如果不选中use Unix line endings就会出现这样的情况
昨晚上将Ubuntu的系统语言改为中文之后
原先文件中出现的 ^M都不见了
而以前使用英文编码然后使用Http将文件下载之后就会在每一行之后附加
然后又将命令精简了一点点
find . -type f -exec dos2unix {} \;
dos2unix : converts the line endings of text files from DOS style (0x0d 0x0a) to UNIX style (0x0a)
命令中的一对花括号{}代表被评测的文件名。而最后的 \;的代表满足条件退出
原先脚本中的 ! 不知有何意思?
去掉之后发现达到同样的效果,而且无需 \ 也一样可以达到目的
附:Linux中的几个匹配 特殊字符
^(行开始指示符)
$(行结束指示符)
.(任意字符指示符)
\>(字结束指示符)
\<(字开始指示符) *(0个或多个指示符) [](定义字符类,也即匹配单个字符) 在定义字符类中,有两个特殊的字符:脱字符(^)和连字符(-)
版权声明:Copyright © Life is being……is licensed under a ....
0 评论
发表评论