QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5855|回复: 14

如何把DOS文本的换行符^M替换成行尾符$

[复制链接]
发表于 2006-8-5 03:28:05 | 显示全部楼层 |阅读模式
怎么在VI里把DOS文本里的换行符“ ^M ”(就是用ctrl+v+m打出来的那个蓝色的),替换成linux里的行尾符“$”   ?
关键咋弄出个蓝色的$啊?
我实在不知怎么搞了,就用   :1,$s/^M/\$/g     ,替换后的$自然就是普通的ASCII码符,没有换行的作用。
用 :1,$s/^M//g,把^M替换成空,也是没换行。
这个BLUE的$应该怎么打出来?
发表于 2006-8-5 10:00:23 | 显示全部楼层
[code:1]2006年08月05日星期六上午09时55分31秒[root@xxx root]# dos2unix --help
dos2unix Copyright (c) 1994-1995 Benjamin Lin
         Copyright (c) 1998      Bernd Johannes Wuebben (Version 3.0)
         Copyright (c) 1998      Christian Wurll (Version 3.1)
Usage: dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]
-h --help        give this help
-k --keepdate    keep output file date
-q --quiet       quiet mode, suppress all warnings
                  always on in stdin->stdout mode
-V --version     display version number
-c --convmode    conversion mode
convmode         ASCII, 7bit, ISO, Mac, default to ASCII
-l --newline     add additional newline in all but Mac convmode
-o --oldfile     write to old file
file ...         files to convert in old file mode
-n --newfile     write to new file
infile           original file in new file mode
outfile          output file in new file mode
[/code:1]
回复

使用道具 举报

 楼主| 发表于 2006-8-5 12:25:18 | 显示全部楼层
我要是硬是要在VI里替换呢?
回复

使用道具 举报

发表于 2006-8-5 12:54:34 | 显示全部楼层
:s/^M/$/g
回复

使用道具 举报

 楼主| 发表于 2006-8-5 13:04:50 | 显示全部楼层
[quote:84f597675a="yueliangdao0608"]:s/^M/$/g[/quote]

用这个只是换成普通的$,而不是在VI里显示漂亮蓝色的那种啊。
回复

使用道具 举报

发表于 2006-8-5 13:33:05 | 显示全部楼层
[quote:17530936b4="manioster"][quote:17530936b4="yueliangdao0608"]:s/^M/$/g[/quote]

用这个只是换成普通的$,而不是在VI里显示漂亮蓝色的那种啊。[/quote]

什么叫漂亮兰色?
回复

使用道具 举报

 楼主| 发表于 2006-8-5 14:00:14 | 显示全部楼层
[quote:ad5a07fed7="yueliangdao0608"][quote:ad5a07fed7="manioster"][quote:ad5a07fed7="yueliangdao0608"]:s/^M/$/g[/quote]

用这个只是换成普通的$,而不是在VI里显示漂亮蓝色的那种啊。[/quote]

什么叫漂亮兰色? [/quote]

就是行尾符啊,普通的LINUX文件,在用:set list命令后,行尾的蓝色$就会显示出来。就是这个蓝色的$。
因为我的文件没有换行,所以想把蓝色的^M换成蓝色的$
回复

使用道具 举报

 楼主| 发表于 2006-8-5 14:49:15 | 显示全部楼层
用file命令探测文件类型时
dos文件 :
#file dostxtfile.c
dostxtfile.c: ASCII C program text, with CR line terminators
而在VI下编辑的普通linux文件是:
#file linuxtxtfile.c
linuxtxtfile.c: ASCII text
回复

使用道具 举报

 楼主| 发表于 2006-8-5 15:03:09 | 显示全部楼层
干脆放一个我的DOS文本文件上来,大家帮我看看吧:)

俺用
#dos2unix -n dosfile.c unixfile.c
#diff  dosfile.c unixfile.c
没发现有什么改变啊~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2006-8-9 00:15:15 | 显示全部楼层
为什么一定要在vi里面做

gugong答案很标准
回复

使用道具 举报

 楼主| 发表于 2006-8-9 16:37:50 | 显示全部楼层
[quote:6a5f0071f3="manioster"]干脆放一个我的DOS文本文件上来,大家帮我看看吧:)

俺用
#dos2unix -n dosfile.c unixfile.c
#diff  dosfile.c unixfile.c
没发现有什么改变啊~[/quote]
回复

使用道具 举报

 楼主| 发表于 2006-8-9 16:41:13 | 显示全部楼层
用dos2unix可能是针对行尾有^M$的情况的,只有把^M替换掉就没问题了。可是我的文件里的行尾只有^M,把^M替换掉的话就更加不能换行了。
回复

使用道具 举报

发表于 2006-8-10 08:51:11 | 显示全部楼层
多几次就行了.
回复

使用道具 举报

 楼主| 发表于 2006-8-10 09:44:20 | 显示全部楼层
:neutral:
回复

使用道具 举报

发表于 2008-12-11 09:15:49 | 显示全部楼层
:%s/^M/\r/g
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-3-29 17:16 , Processed in 0.106895 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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