这似乎正常工作并显示我想要的结果
Dir["/Users/ondrovic/RubyTest/**/*.txt"].each do |i|
puts i.green if File.readlines(i).grep(/test/).any?
end
为什么当我尝试这样做时,它不会填充信息
print "Enter search dir"
src = gets
print "Enter search term"
trm = gets
puts "Looking in #{src} for #{trm}"
Dir["#{src}/**/*.txt"].each do |i|
puts i.green if File.readlines(i).grep(/"#{trm}"/).any?
end
我也尝试过这种方式
Dir[src + "/**/*.txt"].each do |i|
puts i.green if File.readlines(i).grep(/ + trm + /).any?
end
工作代码
require 'colorize'
print "Enter search dir\n".green
src = gets.chomp
print "Enter search term\n".blue
trm = gets.chomp
puts "Looking in #{src} for #{trm}"
Dir["#{src}/**/*.txt"].each do |i|
puts i.green if File.readlines(i).grep(/#{trm}/).any?
end
答案 0 :(得分:2)
gets
的返回值包括尾随换行符:
>> gets
asdf
=> "asdf\n" # <----
>>
使用String#chomp
删除它:
print "Enter search dir"
src = gets.chomp
print "Enter search term"
trm = gets.chomp
...
除此之外,模式/"#{trm}"/
包括"
。删除它们:
/#{trm}/
或者,您可以使用Regexp::new
:
Regexp.new(trm)