我認爲我第一次解釋我的問題可能做得不夠好。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