打印文件中包含特定字符串的所有行

问题描述 投票:0回答:1

我想搜索并在日志文件中查找文件中包含的特定信息,并打印出整行例如,.log文件中的第32行是:

2019-08-07 15:21:09.783             'lineid' -> 'DEU.DTAG.NBGNE00111'

我希望打印出包括单词lineid的每一行。如果有人可以帮助我解决我的问题,我将不胜感激。谢谢

我对ruby和regex还是很陌生,所以我尝试通过互联网搜索某些内容。

File.open("/Users/filip/Documents/Testcases/NG-ART_TC1054921_MKS+Results1/1054921_1042510_2242_TID-2123/TC1042510-TID2123-sequencer.log", "r") do |file|

  for line in file.readlines().include? "lineid"
   puts line
  end
end

我回来的只是

/Users/filip/Documents/cucumber/features/features/step_definitions/lineid.rb:7: syntax error, unexpected end-of-input, expecting end
regex ruby
1个回答
0
投票

在红宝石中,建议使用each进行迭代,通常不使用for循环。您可以尝试以下方法:

File.foreach("/Users/filip/Documents/Testcases/NG-ART_TC1054921_MKS+Results1/1054921_1042510_2242_TID-2123/TC1042510-TID2123-sequencer.log").each do |line|
  puts line if line.match?('lineid')
end

这将为文件中的每一行执行给定的块,而不会将整个文件插入内存。

参见:IO::foreach

使您的示例工作看起来像:

File.open("/Users/filip/Documents/Testcases/NG-ART_TC1054921_MKS+Results1/1054921_1042510_2242_TID-2123/TC1042510-TID2123-sequencer.log", "r") do |file|

  file.readlines().each do |line|
    puts line if line.match("erc")
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.