1. ホーム
  2. ルビー

[解決済み】Rubyでファイルの行を読み込む方法

2022-04-04 08:04:30

質問

以下のコードを使って、ファイルから行を読み込もうとしていました。しかし ファイル の場合、内容が1行にまとまってしまいます。

line_num=0
File.open('xxx.txt').each do |line|
  print "#{line_num += 1} #{line}"
end

しかし、この ファイル は各行を別々に表示します。


のようにstdinを使用する必要がありますね。 ruby my_prog.rb < file.txt ここで、ファイルが使用する行末文字が何であるかを仮定することはできません。どのように処理すればよいのでしょうか?

どのように解決するのですか?

の両方が存在するため、あらゆる種類の改行の処理に関する新しい懸念は、私の回答でカバーできると思います。 "\r\n""\r" はLinux標準の "\n" 行を解析する前に

をサポートするために "\r" EOL 文字は、通常の "\n""\r\n" をWindowsから利用する場合は、以下のようになります。

line_num=0
text=File.open('xxx.txt').read
text.gsub!(/\r\n?/, "\n")
text.each_line do |line|
  print "#{line_num += 1} #{line}"
end

もちろん、これはファイル全体をメモリに読み込むことになるので、非常に大きなファイルでは悪いアイディアかもしれません。