使用“^ z”字符在Ruby中解析文本文件

时间:2015-10-22 18:01:25

标签: ruby io

我有一组大文本文件,其中包含大量信息,格式不一致。我对大多数信息并不是那么关心,但我正在尝试提取文件中包含的ID。我已经起草了一个相当简单的脚本(ID是3位数 - 7位数)。

puts("What's the name of the file you'd like to check? (don't include .txt)")

file_to_check = gets.chomp
file_to_write = file_to_check + "IDs" + ".txt"
file_to_check = file_to_check + ".txt"
output_text = ""
count_of_lines = 0

File.open(file_to_check, "r").each_line do |line|
    count_of_lines += 1
    if /.*\d{3}-\d{7}.*/ =~ line
        temp_case = line.match(/\d{3}-\d{7}/).to_s
        temp_case = temp_case + "\n"
        output_text = output_text + temp_case
    else
        # puts("this failed")
    end
end

File.open(file_to_write, "w") do |file|
    file.puts(output_text)
    file.puts(count_of_lines)
end

其中一个文件包含VIM显示为^ Z的字符,它们似乎在实际到达文件末尾之前杀死了脚本。

有什么办法可以让Ruby忽略这些字符并继续浏览文件吗?

1 个答案:

答案 0 :(得分:1)

Per Mircea的评论,答案是here。我根据所选答案的一条评论使用了“rt”。