Argh. 30+ zone files and I have to increment all numbers by hand…no way.
Usage: ./inc.rb in the current directory with all db files.
#!/usr/bin/ruby Dir.glob("*.db") do |file_name| new_zone = [] File.open(file_name) do |file| while (line = file.gets) line.chomp! if line =~ /Serial/ line =~ /(\s*?)(\d+)(\s*?)(;.*)/ serial = $2.to_i serial += 1 puts "#{file_name} serial line: #{$1} #{$2} #{$3} #{$4} -> #{$1}#{serial}#{$3}#{$4}" line = "#{$1}#{serial}#{$3}#{$4}" end new_zone << line end end File.open(file_name, "w") do |new_file| new_file.write(new_zone.join("\n")); end end