|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (4) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-07-29
文件夹下n个文件,读取不相同任意两个文件的最后一行文本组成一个新的文件
如假设有3个文件,A文件最后一行为: AAAA B文件最后一行为:BBBB C文件最后一行为: CCCC 那么应该生成3个新文件: 文件 AB 内容 AAAABBBB BC BBBBCCCC AC AAAACCCC ----------------------------- 这个用java写了也花了点时间,用脚本语言是否会快些?另:有没有比较有效的抓到最后一行文本的办法?如果文本数据量很大的话 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-29
读取文件最后一行: `tail -1 FILE`
最简单的实现方式是 `tail -1 A > AB`;`tail -1 B >> AB` 有了A,B,C,干吗要把他们的最后一行取出来,还是组成三个文件而不是六个文件? |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-30
做实验时的需求,原来ABC三个文件,再生成两两互相取最后一行的新文件AB,BC,AC 共六个文件
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-30
lines = {}
Dir.glob('*').each{|file| lines[file] = IO.readlines(file)[-1]}
lines.keys.combination(2).each{|x,y| File.open(x+y,'w+'){|f| f << lines[x]+lines[y]}}
|
|
| 返回顶楼 | |
|
最后更新时间:2008-07-30
读最后一行,可惜IO没有to_negative或reverse的支持,一行行读下来,遇到大文件会慢。
file.seek(一个负值,IO::SEEK_END) 又不能保证接下来readline能得到最后的整行 用纯ruby有什么好办法吗? 花花公子和phoenix520的代码合一下就好了 |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-30
p=IO.popen("tail -n1 A")
p.readline |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-30
用ruby调tail是最快的,
如果操作系统没有tail,可以用很傻的遍历: last = File.open(filename) {|f| f.inject {|ignore,line| line} 有一道Ruby Quiz和这个问题相关: http://rubyquiz.com/quiz64.html |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-30
操作系统如果没有tail还是建议装一个MSYS,保证受益无穷
Quake Wang 写道 用ruby调tail是最快的,
如果操作系统没有tail,可以用很傻的遍历: last = File.open(filename) {|f| f.inject {|ignore,line| line} 有一道Ruby Quiz和这个问题相关: http://rubyquiz.com/quiz64.html |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-30
http://file-tail.rubyforge.org/
找到这个东东 Description This Library is similar to Perl's File::Tail. It can be used to extend Ruby's File-objects, as mixin for own File-derived classes, or by using the included simple File::Tail::Logfile class. gem install后,应该如何使用呢? -------- 谢谢ls各位大牛 拜... java若干io操作用命令行一句竟然就可以实现 谢各位 |
|
| 返回顶楼 | |
|
最后更新时间:2008-07-30
哈哈,好玩。
http://file-tail.rubyforge.org/doc/index.html
class File
include File::Tail
def self.last_line(filename)
open(filename) do |file|
file.backward(1)
result = file.tail(1).first
end
result
end
end
puts File.last_line(filename)
|
|
| 返回顶楼 | |











