免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: YTHTdeWo
打印 上一主题 下一主题

[求助][急!]如何判断一个文件是不是UNIX格式的呢?[完结] [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-07-25 12:54 |只看该作者

回复 #9 net_robber 的帖子

WINDOWS下面应该怎么办呢。。。。。

论坛徽章:
0
12 [报告]
发表于 2008-07-25 12:55 |只看该作者
唉,google 在那里放着,你怎么就不用涅?

http://www.technocage.com/~caskey/dos2unix/

论坛徽章:
0
13 [报告]
发表于 2008-07-25 13:03 |只看该作者

回复 #12 cobrawgl 的帖子

谢谢大哥,我看看去

论坛徽章:
0
14 [报告]
发表于 2008-07-25 13:16 |只看该作者
恐怕还是不行

要我做的只是检查,不能去修改文件的

不知道这样行不?

dos文件的换行符16进制代码是“0D0A”
unix文件的换行符16进制代码是“0A”
通过这个差别应该可以区别

只是如何取得16进制代码呢?

论坛徽章:
0
15 [报告]
发表于 2008-07-25 13:23 |只看该作者
本来想用匹配的方式做,可是结果不对。。。

#!/usr/bin/perl -W
use strict;
use warnings;
use IO::File;

&test("DOS.txt");
&test("UNIX.txt");

sub test {
my $file = shift;
print "========$file===========\n";
my $read_file = IO::File->new();
$read_file->open($file,O_RDONLY) or die('unable to open $file ": ', $!, "\n");
while (defined(my $line=$read_file->getline())) {

if ( $line =~ /\r\n/ ){
  print "UNIX\n";
}else{
  print "DOS\n";
}

}
$read_file->close();
}

结果不管哪个文件都认为是DOS格式

========DOS.txt===========
DOS
DOS
DOS
DOS
========UNIX.txt===========
DOS
DOS
DOS

论坛徽章:
0
16 [报告]
发表于 2008-07-25 13:34 |只看该作者
原帖由 hfahe 于 2008-7-25 09:55 发表
unix格式是什么意思呢?


看到一段解释,呵呵

Under DOS (Windows/PC) the end of a line of text is signalled using the ASCII code sequence CarriageReturn,LineFeed. Alternately written as CR,LF or the bytes 0x0D,0x0A. On the Macintosh platform, only the CR character is used. Under UNIX, the opposite is true and only the LF character is used.

论坛徽章:
0
17 [报告]
发表于 2008-07-25 13:39 |只看该作者
刚才看到有个地方说Python的内置函数

hex(),转换为16进制。 hex(12) = 0xc

发现perl也有这样的函数,可是只能把原来的数字当作16进制数字转换成10进制的数字。。。

[ 本帖最后由 YTHTdeWo 于 2008-7-25 13:46 编辑 ]

论坛徽章:
0
18 [报告]
发表于 2008-07-25 16:31 |只看该作者
原帖由 YTHTdeWo 于 2008-7-25 13:16 发表
恐怕还是不行

要我做的只是检查,不能去修改文件的

不知道这样行不?

dos文件的换行符16进制代码是“0D0A”
unix文件的换行符16进制代码是“0A”
通过这个差别应该可以区别

只是如何取得16进制代 ...



问题基本解决
要用到binmode和unpack,以及dos文件和unix文件换行符的差别

论坛徽章:
0
19 [报告]
发表于 2008-07-31 15:04 |只看该作者

回复 #18 YTHTdeWo 的帖子

试了下 http://www.technocage.com/~caskey/dos2unix/ 的代码,好像在windows下执行是没用的。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP