我认为我第一次解释我的问题可能做得不够好。Ruby:使用csv作为数据库
我想打开一堆文本和二进制文件,并用我的正则表达式扫描这些文件。我需要从csv中获取第二列中的数据,这是所有文件的路径,作为指向打开哪个文件的方式。
打开文件并通过文件扫描正则表达式后,如果它匹配任何内容,它将显示在屏幕上。我很抱歉感到困惑,并非常感谢你的一切! -
你好,
我是问什么可能是一个简单的问题,对不起。我对Ruby新手感兴趣,并会欣赏任何指导。
我正在尝试使用csv文件作为索引来利用其他操作。
特别是,我有一个CSV文件看起来像:
id, file, description, date
1, /dir_a/file1, this is the first file, 02/10/11
2, /dir_b/file2, this is the second file, 02/11/11
我想打开“文件”列中定义的每个文件,然后搜索正则表达式。
我知道,你可以在每列与CSV类
require 'rubygems'
require 'csv'
require 'pp'
index = CSV.read("files.csv", :headers => true)
index.each do |row|
puts row ['file']
end
我知道如何创建一个打开每个文件和搜索对每个文件中的正则表达式的循环定义标题,如果有一个,其显示:
regex = /[0-9A-Za-z]{8,8}-[0-9A-Za-z]{4,4}-[0-9A-Za-z]{4,4}-[0-9A-Za-z]{4,4}-[0-9A-Za-z]{12,12}/
Dir.glob('/home/Bob/**/*').each do |file|
next unless File.file?(file)
File.open(file, "rb") do |f|
f.each_line do |line|
f.each_line do |line|
unless (pattern = line.scan(regex)).empty?
puts "#{pattern}"
end
end
end
end
end
有没有一种方法,我可以使用第二列的内容在我的csv文件作为我的变量打开每个文件,搜索正则表达式,如果有匹配的文件,输出csv中与新的csv匹配的行?
预先感谢您!
为什么两个`f.each_line do | line |`? – 2011-02-15 22:06:14
尝试使用Solr http://lucene.apache.org/solr/ – 2014-05-23 20:32:41