oracle cr lf,不用操作系统下的回车换行(CR,LF)

以前看到EditPlus里面文本文件可以设置PC/UNiX/MAC三种格式,UltraEdit中可以设置DOS格式和Unix格式,一直不知道区别在那里。原来回车(CR)和换行(LF)符都是用来表示下一行的。于是产生了三种不同的用法:Dos和windows采用回车+换行(CR+LF)表示下一行(亦即所谓的PC格式,谁让MS最早雄踞PC市场呢),UNIX采用换行符(LF)表示下一行,MAC机采用回车符(CR)表示下一行。

涉及在PC和Unix两个平台下工作的人,

或注意过UltraEdit中三种文本文件格式的人, 或知道vim中:set fileformat选项的人,

应该知道在当今的电脑世界中, 存在三种文本格式:

PC: 或者说DOS的,

或者说微软的, 或者说WINDOWS的,

以为行尾的标志.

其中的ASCII是十进制数的13, 十六进制的0x0D.

的ASCII是十进制10,

十六制为0x0A.

Mac:

以作为文本文件行尾的标志符

UNIX:

以作为文本文件行尾标志符

在很多计算机语言中,

表示为字符或字符串是\r,

而表示为字符或字符中是\n.

而在printf这样的函数中, 如果你出现一个\n,

它却代表了一个逻辑上的意义, 即它代表在本地系统上的那种回车换行,

所以它在UNIX上只是,

但如果你在DOS上用诸如Truboc编程的话它输出的是

Unix上有一个小工具, 专门在两种文件格式之间进行转换,

叫unix2dos, dos2unix.

在UltraEdit的

File->Conversions(有些版本是在Format ->

Convert to..)菜单中, 有三个子菜单项就是专供你在各种文本格式之间转换的.

在vim中, 如果你想把一个文件存为另一种文件格式, 只需:set

fileformat=unix或等号后面是dos, mac即可,

接下来的存盘动作就会自动把你的文件存为指定平台的格式.

查看一个既有文件的格式:

unix: file

filename

注意第一个file是一个命令, 它会报告给定的文件的类型.

实际上它维护了一个各种文件类型特征的一个数据库, 可以告诉你任何文件的类型(当然前提是得先编进入数据库),

不光是文本文件格式这种小儿科

windows:

办法一: 可以用记事本打开, 如果正常就是一个DOS格式的,

如果出现一个超长的变态的行, 那可能是unix的也可能是mac的格式,

我在winxp上试验的结果是这两种格式引起的外在表现都一样.

办法二:使用编辑器例如NotePad++查看,通过菜单 VIEW

-> Show all

characters显示所有字符,通过回车换行符的格式查看。

办法三:用cygwin中的file命令,

如上.

办法四:用cygwin中的 sed -n 1p

filename.txt | xxd -g1

看最后显示的两个十六进制数是0D

0A还是其中的数加一个

完全可以在一个平台下使用另一个平台的文本格式,

只要所有处理到这个文本文件的程序都要知晓这一约定. 它其实只是各个程序之间的一种约定, 比如你用word创建了一个文件,

另存为纯文本时, 它当然存为DOS格式的了, 而同样是微软的程序记事本也是假设同样的格式, 所以它们能工作的很好,

再往系统下面一点看, C语言中的函数库, 凡是在DOS/WINDOWS平台上的实现, 它也会考虑同样的约定,

这样你用fputs或fgets来写/读文本文件时,

写入的自然也就是了.

其它平台的情形自然也类似.

ftp的考虑

一些ftp的客户端程序会自动进行各个平台的文本文件格式转换.

所以要注意你在ftp中用ls看看到的文件大小未必是你下载下来的文件大小. 上传过程也是一样.

如果你不想ftp这样自作主张只要用bin命令即可.

它会告诉ftp进行逐字节的高保真二进制模式传输.

每个文件都从一而终吗

不必然. 我在linux中经常碰到一些文件被莫名其妙地弄得雌雄莫辨,

一些行是DOS格式的, 一些行是UNIX格式的, 这么说可能会让人越来越乱, 怎么可能在UNIX上有DOS格式的呢.

又怎么可能一个文件内部有两种格式呢. 了解了这个问题的实质其实上面所说都只是一些文字上的方便, 或者说文字上造成的不方便.

所谓DOS文本格式无非是可见文字编码(不仅限于ASCII了,

中文文本文件也算是)中间插入了这两个字符.

而UNIX文本格式也无非是以作分隔罢了.

它一会以这个分隔一会以那个分隔就是所说的混合格式了.

碰到这种文件unix2dos和dos2unix两个工具仍然能应付.

但对于vim就不行了. 简单的:set ff=unix会让它莫衷一是, 因为文件的一部分已经是unix的了.

它也确实是把文件在内部认为是unix格式了.

此时就只能把多余的干掉了.

它在vim中显示是一个^M字符. 视你的终端和颜色配置情况,

往往还带着扎眼的亮色.

:%s#^M##g

上面命令中的^M是一个字符,

代表回车,

输入的办法是在UNIX中先按再按回车键,

在windows中要先按, 再按回车键,

原因只是在WINDOWS中大家已经习惯用来粘贴,

所以VIM把这个键映射到了上.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值