来自文件access_file.txt
,其中包含大约500个条目,内容为:
id\hzxcr
roll\85pol
id\byt65_d
rfc\myid
sub\aa_frt_09
.........
.........
我想检查目录:D:/Details/Ruby_new
下的任何文件中是否存在任何行,其中包含大约100多个文件,扩展名为*-accessfile.txt
,如下所示:
Name_accessfile.txt
ID_accessfile.txt
domain_accessfile.txt
roll_accessfile.txt
.......
.......
如果存在,我想删除该实例或字符串,并将其保存在同一文件中。我不想创建新文件或备份文件,而是编辑并保存在同一个文件中。
我想出了以下代码:
value=File.open('D:\\my_work\\access_file.txt').read
value.gsub!(/\r\n?/, "\n")
value.each_line do |line|
line.chomp!
Dir.glob("D:/Details/Ruby_new/*-accessfile.txt") do |file_name|
text = File.read(file_name)
#print "FileName: #{file_name}\n"
replace = text.gsub(/#{line}/, "")
File.open(file_name, "w") { |file| file.puts replace }
end
end
但我面临以下警告,并且不会从目标文件中删除字符串。
my_ruby.rb:10: warning: invalid subexp call: /id\hzxcr/ my_ruby:10:
warning: invalid subexp call: /id\hzxcr/
寻找任何建议。
答案 0 :(得分:0)
试试这个replace = text.gsub(line.strip, "")
代替replace = text.gsub(/#{line}/, "")