LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 824|回复: 2

一个文本字符串替换的问题

[复制链接]
发表于 2005-3-17 12:24:08 | 显示全部楼层 |阅读模式
使用
sed -e 's/原字符串/新字符串/g' 文件名
可以实现字符串替换功能
但有一个文件在每一行末尾都有"^M"
我使用
sed -e 's/^M//g' 文件名
却不能实现替换,文件一点变化都没有
怎么回事呢????
发表于 2005-3-17 12:36:29 | 显示全部楼层
看看下面的或许有帮助
大家知道如果将dos系统中的文件转移到linux系统中,在文件的每一行的末尾都会有一个^M(Ctrl-M)。这个字符代表回车。在dos中,换行是由字符序列\r\n来表示的,其中\r是回车符,\n才是换行符。在linux系统中,换行仅仅由\n表示。当一个在dos系统上创建的文件在linux系统中查看的时,其中的\ r就回被显示为^M。可以像下面这样用tr命令来删除这些^M:

tr -d '\015' < file > newfile

file是包含回车的文件,newfile是file文件中的回车被删除后的文件。这里使用八进制的\015来代表回车,这是因为转义序列\r在有些版本的tr中不能被正确的解释。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-17 12:42:38 | 显示全部楼层
果然可以,多谢了,兄弟
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表