我试图从目录中读取所有文本文件,遍历每个文件,并在文件中搜索字符串并删除这些行。例如,
sample.txt的
#Wrote for the configuration ideas
mag = some , db\m09oi, id\polki
jio = red\po9i8
[\]
@mag = denk
@jio = tea
我想删除有mag的行。
输出
#Wrote for the configuration ideas
jio = red\po9i8
[\]
@jio = tea
我试过了:
Dir.glob("D:\\my_folder\\*.txt") do |file_name|
value = File.read(file_name)
change = value.gsub!(/[@m]ag/, "")
File.open(file_name, "w") { |file| file.puts change }
end
但是线条没有被删除。
请提出任何建议。
答案 0 :(得分:2)
最好逐行读取文件,如果一行包含mag,只需省略它,只将其他行写入新文件。 - 致@WiktorStribiżew的信用
File.write(file_name, File.readlines(file_name).reject do |line|
line[/\bmag\b/]
end.join($/))
在这里,我们阅读文件,按IO#readlines
分割,拒绝mag
作为单个字内的行("magistrate"
将不匹配),将其与为此特定平台指定的行分隔符(例如,在unix上为\n
)并将其写回。