我有以下格式的多个文件
例如,文件:sample.txt
id = class\234ha, class\poi23, class\opiuj, cap\7y6t5
dept = sub\6985de, ret\oiu87, class\234ha
cko = cyr\hui87
我正在查找string并从多个文件中删除它。比如,查找并删除string - class\234ha。
我的代码工作正常,它删除了所有预期的字符串,但在预期的或标记的字符串被删除后,行尾有一个尾随逗号。
例如,删除字符串后的sample.txt- class\234ha
id = class\poi23, class\opiuj, cap\7y6t5
dept = sub\6985de, ret\oiu87,
cko = cyr\hui87
我想删除ret\oiu87,之后的最后一个逗号only。多个文件应该是相同的。我不确定逗号后面是否有换行符或空格。我如何才能使它工作。提前感谢。
电码
pool = ''
svn_files = Dir.glob("E:\work'*-access.txt")
value=File.open('E:\nando\list.txt').read
value.each_line do |line|
line.chomp!
print "VALUE: #{line}\n"
svn_files.each do |file_name|
text = File.read(file_name)
replace = text.gsub( /#{Regexp.escape(line)}\,\s/, '').gsub( /#{Regexp.escape(line)}/, '' )
unless text == replace
text.each_line do |li|
if li.match(/#{Regexp.escape(line)}/) then
#puts "Its matching"
pool = li.split(" ")[0]
end
end
File.open('E:\Removed_users.txt', 'a') { |log|
log.puts "Removed from: #{file_name}"
log.puts "Removed user : #{line}"
log.puts "Removed from row :#{pool}"
log.puts "*" * 50
}
File.open(file_name, "w") { |file| file.puts replace }
end
end
end
1条答案
按热度按时间lhcgjxsq1#
复杂的正则表达式是邪恶的。除非你的应用领域真的需要它们,否则不要使用它们。相反,要进行多次传递。我真的不确定你想要替换的是什么,但在结构上这是你想要做的:
这将向屏幕发送以下输出:
使用这种方法,无论是逐行还是多行字符串都没有关系。无论哪种方式,您只需去掉每行末尾的逗号和尾随空格。简单!