一个菜鸟问题,请大侠赐教(^M 问题)

sh/bash/dash/ksh/zsh等Shell脚本
回复
Messiya
帖子: 61
注册时间: 2009-12-02 15:49

一个菜鸟问题,请大侠赐教(^M 问题)

#1

帖子 Messiya » 2009-12-14 10:33

一个windows的文件,在ubuntu下每行结尾都有一个“^M”
在命令行模式下,可以用sed 's/^M$//' a.txt >b.txt 删除掉

但是为啥写在脚本里边就不行了呢

求大侠指点
头像
nicegiving
帖子: 125
注册时间: 2008-07-03 19:25

Re: 一个菜鸟问题,请大侠赐教(^M 问题)

#2

帖子 nicegiving » 2009-12-14 14:36

Windows下文件的换行符和linux下面的不一样。
在Windows下应该使用“\r\n”提供一次换行
而在Linux下只需要“\n”就可以了。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 一个菜鸟问题,请大侠赐教(^M 问题)

#3

帖子 eexpress » 2009-12-14 14:40

就那\r 而已。别管它。
● 鸣学
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: 一个菜鸟问题,请大侠赐教(^M 问题)

#4

帖子 xhy » 2009-12-14 14:45

所以在windows下也要坚持用VIM或者emacs,不要用那些脑残编辑器
目前负债150多万
头像
懒蜗牛Gentoo
论坛版主
帖子: 7362
注册时间: 2007-03-02 17:36
系统: Linux Mint

Re: 一个菜鸟问题,请大侠赐教(^M 问题)

#5

帖子 懒蜗牛Gentoo » 2009-12-14 14:52

再教lz个不用sed的方法,有个命令叫unix2dos,还有个命令叫dos2unix。不知道ub下默认有没有,没有就apt吧
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
prettya1
帖子: 5
注册时间: 2008-03-31 15:58

Re: 一个菜鸟问题,请大侠赐教(^M 问题)

#6

帖子 prettya1 » 2010-01-05 15:25

这是由于文本中有两个\r造成的。
用这个 sed 's/\r$//' <file-name> 就可以了。
或在用vim 打开文件,会看到^M,这里用set ff=unix 保存退出后,再用vim打开就会看不到了。
回复