替换并删除字符串

时间:2017-05-11 09:21:40

标签: ruby

来自文件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/

寻找任何建议。

1 个答案:

答案 0 :(得分:0)

试试这个replace = text.gsub(line.strip, "")代替replace = text.gsub(/#{line}/, "")