напечатать все строки файла, которые содержат определенную строку - PullRequest
0 голосов
/ 03 октября 2019

Я хочу найти и в файле журнала определенную информацию, содержащуюся в файле, и распечатать всю строку, например, строка 32 в файле .log:

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

Я получаю только 1009 *

/Users/filip/Documents/cucumber/features/features/step_definitions/lineid.rb:7: syntax error, unexpected end-of-input, expecting end

1 Ответ

0 голосов
/ 03 октября 2019

В ruby ​​рекомендуется использовать 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.include?('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.include?("erc")
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...