Удалить строки, начинающиеся с 'AUTO_INCREMENT =' в 2 файлах - PullRequest
0 голосов
/ 18 августа 2011

Я пытаюсь создать сценарий ruby, который загружает 2 файла .sql и удаляет все строки, начинающиеся с 'AUTO_INCREMENT ='. В моих файлах .sql встречается несколько случаев, и все, что мне нужно, это удалить их изфайлы.Спасибо за любую помощь или вклад, так как я новичок в ruby ​​и решил попробовать.

Ответы [ 3 ]

0 голосов
/ 18 августа 2011

Вы должны прочитать 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
0 голосов
/ 18 августа 2011

Учитывая правильное регулярное выражение (приведенное ниже может быть не самым правильным, учитывая синтаксис), и ответ, полученный там на аналогичный вопрос, довольно просто собрать сценарий: *

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
0 голосов
/ 18 августа 2011

Вы пытались использовать Regex для этого?Если вы хотите удалить всю строку, вы можете просто сопоставить ^ AUTO_INCREMENT =. + $ И заменить ее пустой строкой.Этот шаблон должен соответствовать всей строке, начинающейся с AUTO_INCREMENT.

Вот хороший сайт для изучения регулярных выражений, если вы не знакомы с ним:

Надеюсь, что это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...