我正在尝试创建一个加载2 .sql文件的ruby脚本,并删除所有以'AUTO_INCREMENT ='开头的字符串 我的.sql文件中出现了多次这种情况,我想要的是从两个文件中删除它们。 感谢任何帮助或输入,因为我是ruby的新手,并决定尝试一下。
答案 0 :(得分:0)
您是否尝试过使用正则表达式?如果要删除整行,可以简单地匹配^ AUTO_INCREMENT =。+ $并将其替换为空字符串。该模式应匹配以AUTO_INCREMENT开头的整行。
Here's a good site to learn Regex if you aren't familiar with it:
希望对你有用。
答案 1 :(得分:0)
您应该阅读IO, String, Array,了解有关可以使用的方法的详细信息。
以下是您可以阅读,修改和保存一个文件内容的方法:
# Opens a file for reading.
file = File.open("file1.txt")
# Reads all the contents into the string 'contents'.
contents = file.read
file.close
# Splits contents into an array of strings, one for each line.
lines = contents.split("\n")
# Delete any lines that start with AUTO_INCREMENT=
lines.reject! { |line| line =~ /^AUTO_INCREMENT=/ }
# Join the lines together into one string again.
new_contents = lines.join("\n")
# Open file for writing.
file = File.open("file1.txt", "w")
# Save new contents.
file.write(new_contents)
file.close
答案 2 :(得分:0)
鉴于正确的正则表达式(下面的一个可能不是最正确的给定语法),并给出there给出类似问题的答案,将脚本放在一起是相当简单的:
file_names = ['file1.sql', 'file2.sql']
file_names.each do |file_name|
text = File.read(file_name)
File.open(file_name, 'wb') do
|file|
file.write(text.gsub(/\s*AUTO_INCREMENT\s*(\=\s*[0-9]+)?/, ""))
end
end