manioster 发表于 2006-8-5 03:28:05

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

怎么在VI里把DOS文本里的换行符“ ^M ”(就是用ctrl+v+m打出来的那个蓝色的),替换成linux里的行尾符“$”   ?
关键咋弄出个蓝色的$啊?
我实在不知怎么搞了,就用   :1,$s/^M/\$/g   ,替换后的$自然就是普通的ASCII码符,没有换行的作用。
用 :1,$s/^M//g,把^M替换成空,也是没换行。
这个BLUE的$应该怎么打出来?

gugong 发表于 2006-8-5 10:00:23

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

manioster 发表于 2006-8-5 12:25:18

我要是硬是要在VI里替换呢?

yueliangdao0608 发表于 2006-8-5 12:54:34

:s/^M/$/g

manioster 发表于 2006-8-5 13:04:50

:s/^M/$/g

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

yueliangdao0608 发表于 2006-8-5 13:33:05

:s/^M/$/g

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

什么叫漂亮兰色? 8O

manioster 发表于 2006-8-5 14:00:14

:s/^M/$/g

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

什么叫漂亮兰色? 8O

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

manioster 发表于 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

manioster 发表于 2006-8-5 15:03:09

干脆放一个我的DOS文本文件上来,大家帮我看看吧:)

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

atfa 发表于 2006-8-9 00:15:15

为什么一定要在vi里面做

gugong答案很标准

manioster 发表于 2006-8-9 16:37:50

干脆放一个我的DOS文本文件上来,大家帮我看看吧:)

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

manioster 发表于 2006-8-9 16:41:13

用dos2unix可能是针对行尾有^M$的情况的,只有把^M替换掉就没问题了。可是我的文件里的行尾只有^M,把^M替换掉的话就更加不能换行了。

yueliangdao0608 发表于 2006-8-10 08:51:11

多几次就行了.

manioster 发表于 2006-8-10 09:44:20

:neutral:

homey123 发表于 2008-12-11 09:15:49

:%s/^M/\r/g
页: [1]
查看完整版本: 如何把DOS文本的换行符^M替换成行尾符$