0

つまり、添付のログ ファイルから読み取り、MAY_DAY というキーワードを含む日付と時刻をレポートするには、Ruby が必要です。すべての情報を印刷することはできますが、特定のエントリを印刷する方法がまったくわかりません。

私は非常に初心者であり、ルビーを理解するのは非常に難しいと感じています。すべての助けと敬意を表する批判に感謝します。ありがとう

test.txt

Oct 15 12:54:01 WHERE IS THE LOVIN MAY_DAY
Oct 16 23:15:44 WHAT THE HECK CAN I DO ABOUT IT HUMP_DAY 
Oct 16 14:16:09 I LOVE MY BABY GIRL MAY_DAY 
Oct 16 08:25:18 CAN WAIT UNTIL MY BABY RECOVERS CRYSTAL_WIFE 
Oct 18 17:48:38 I HOPE HE STOP MESSING WITH THESE FOOLISH CHILDREN TONY_SMITH 
Oct 19 05:17:58 GAME TIME GO HEAD AND GET ME MAY_DAY 
Oct 20 10:23:33 GAMESTOP IS WHERE ITS AT GAME_DAY
Oct 21 03:54:27 WHAT IS GOING ON WITH MY LUNCH HUNGRY_MAN

RestartMonitor.rb

class RestartMonitor    

   counter = 1
   begin
      file = File.new("test.txt", "r")
      while (line = file.gets)
         puts "#{counter}: #{line}"
         counter = counter + 1
      end

 end

ファイルを実行すると、次の結果が得られます。

Oct 15 12:54:01 WHERE IS THE LOVIN MAY_DAY
Oct 16 23:15:44 WHAT THE HECK CAN I DO ABOUT IT HUMP_DAY 
Oct 16 14:16:09 I LOVE MY BABY GIRL MAY_DAY 
Oct 16 08:25:18 CAN WAIT UNTIL MY BABY RECOVERS CRYSTAL_WIFE 
Oct 18 17:48:38 I HOPE HE STOP MESSING WITH THESE FOOLISH CHILDREN TONY_SMITH 
Oct 19 05:17:58 GAME TIME GO HEAD AND GET ME MAY_DAY 
Oct 20 10:23:33 GAMESTOP IS WHERE ITS AT GAME_DAY
Oct 21 03:54:27 WHAT IS GOING ON WITH MY LUNCH HUNGRY_MAN

コードを実行すると、キーワールド MAY_DAY を持つ日付と時刻のみが表示されます。したがって、出力は次のようになります。

Oct 15 12:54:01
Oct 16 14:16:09
Oct 19 05:17:58
4

1 に答える 1

1

それを行う1つの方法は次のようになります(明らかに、ファイル内の行を反復しているブロック内で):

if line.include?('MAY_DAY')
  puts line[0..14]
end

日付情報 (出力したいもの) はすべての行で同じ位置に表示され、同じ長さであるため、出力のためにテキストを解析する必要はありません。最初の 15 文字を吐き出すだけです。

これらすべてを 1 つの正規表現に圧縮しようとする誘惑にかられますが、これは機能するはずです。明らかに、条件内の日付を出力する以外のことを行うことができます。また、それ日付として処理したい場合は、(最初DateTime.parse()に覚えておいてください)に渡すことができます。require 'date'

于 2013-10-28T21:03:06.790 に答える