Ruby在文件中查找字符串并打印结果

0x6upsns  于 2023-11-18  发布在  Ruby
关注(0)|答案(3)|浏览(144)

我已经很久没有用ruby做这样的事情了,但是我忘记了如何打开一个文件,查找一个字符串,以及打印ruby找到的东西。

#!/usr/bin/env ruby
f = File.new("file.txt")
text = f.read
if text =~ /string/ then
puts test
end

字符串
我想确定config/routes.rb中的“documentroot”(路由)是什么
如果我打印字符串,它就打印文件。
我不记得这是什么感觉很蠢,但我需要知道。
我希望我能打印出来:

# Route is:
blah blah blah blah

x6h2sr28

x6h2sr281#

File.open 'file.txt' do |file|
  file.find { |line| line =~ /regexp/ }
end

字符串
这将返回匹配正则表达式的第一行。如果您想要 * 所有 * 匹配行,请将find更改为find_all
它也更高效,每次遍历一行,而不需要将整个文件加载到内存中。
也可以使用grep方法:

File.foreach('file.txt').grep /regexp/

w80xi6nr

w80xi6nr2#

获取根的最简单方法是:

rake routes | grep root

字符串
如果你想在Ruby中使用它,我会这样做:

File.open("config/routes.rb") do |f|
  f.each_line do |line|
    if line =~ /root/
      puts "Found root: #{line}"
    end
  end
end

mkshixfv

mkshixfv3#

text中,整个文件都是一个字符串,你可以使用带有regexp的.match来匹配它,或者像Dave Newton建议的那样,你可以遍历每一行并检查。比如:

f.each_line do |line|
  puts line if line =~ /string/
end

字符串

相关问题