Thunder Bird
Communication & Improvement
posts - 47,  comments - 155,  trackbacks - 0
当在windows和linux之间进行文件交互时,常常会发生linux在文件的每行结尾都加上一个^M,就是linux下的换行符,非打印字符,但占有一个单位的长度,所以在处理字符串时要注意,可以用perl中的正则表表达式将其替换掉,但^M输入时不能直接输入,要通过Ctrl+V然后CTRL+M来输入:
while(<INFILE>)
{
   chomp;
   s/^M$//;
}
posted on 2006-04-18 17:37 Thunder 阅读(1665) 评论(5)  编辑 收藏 引用

FeedBack:
# re: linux文件中的^M问题
2006-04-18 18:59 | gyn_tadao
用binmode(<INFLE>)传不行吗?  回复  更多评论
  
# re: linux文件中的^M问题
2006-04-18 19:04 | Thunder
不好意思,我没试过,只是今天别人问我时才发现的,她是通过ftp传上去的  回复  更多评论
  
# re: linux文件中的^M问题
2006-04-19 08:46 | gyn_tadao
照你这么写法,只匹配一个M的。
应该是这样吧:
s/\^M$//;  回复  更多评论
  
# re: linux文件中的^M问题
2006-04-19 09:05 | Thunder
@gyn_tadao
不要用转义符,因为按照我说的输入^M的方法后,前面的那个^已经和正则表达式匹配中匹配行首的^不一样了!
  回复  更多评论
  
# re: linux文件中的^M问题
2006-04-19 09:10 | gyn_tadao
o~~
没试过,这次长见识了。
(你回得真快)  回复  更多评论
  
只有注册用户登录后才能发表评论。

<2006年4月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

常用链接

留言簿(8)

随笔档案

相册

搜索

  •  

最新评论

阅读排行榜

评论排行榜