Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 删除2个文件中以“AUTO_INCREMENT=”开头的字符串_Ruby_String_Import - Fatal编程技术网

Ruby 删除2个文件中以“AUTO_INCREMENT=”开头的字符串

Ruby 删除2个文件中以“AUTO_INCREMENT=”开头的字符串,ruby,string,import,Ruby,String,Import,我试图创建一个ruby脚本,加载2.sql文件并删除所有以“AUTO_INCREMENT=”开头的字符串 在我的.sql文件中多次出现这种情况,我只想将它们从这两个文件中删除。 感谢您的帮助或意见,因为我是ruby新手,决定尝试一下。您是否尝试过使用正则表达式来实现此目的?如果要删除整行,只需匹配^AUTO_INCREMENT=.+$并将其替换为空字符串即可。该模式应匹配以自动增量开始的整行 希望这对你有用。你应该阅读更多关于你可以使用的方法的详细信息 以下是如何读取、修改和保存一个文件的内容:

我试图创建一个ruby脚本,加载2.sql文件并删除所有以“AUTO_INCREMENT=”开头的字符串 在我的.sql文件中多次出现这种情况,我只想将它们从这两个文件中删除。
感谢您的帮助或意见,因为我是ruby新手,决定尝试一下。

您是否尝试过使用正则表达式来实现此目的?如果要删除整行,只需匹配^AUTO_INCREMENT=.+$并将其替换为空字符串即可。该模式应匹配以自动增量开始的整行

希望这对你有用。

你应该阅读更多关于你可以使用的方法的详细信息

以下是如何读取、修改和保存一个文件的内容:

# 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

鉴于正确的regexp,鉴于语法和对类似问题的回答,下面的regexp可能不是最正确的,将脚本放在一起相当简单:

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