将正则表达式结果写入新文件

Writing regex result into a new file

我有一个设备列表:

这个小 ruby 脚本计算文件的行数 braslist.txt 使用正则表达式扫描它并将结果写入名为 "strippedfile.txt"

的新文件
lines = IO.readlines("/usr/local/bin/braslist.txt")

# Linecount is forwarded to StdOut.
puts lines.length

str = File.read('braslist.txt')

file_name = ['strippedfile.txt']

file_name.each do |file_name|
  text = File.read(file_name)
  new_contents = str.scan(/^ipc-(?<bng>[a-z]{3}\d{3})-r-br(?<nr>-\d{2})$/)

# open and write to a file with ruby
open('strippedfile.txt', 'w') { |f|
  f.print new_contents
}

end

现在我似乎无法解决的问题是在新文件中 "strippedfile" 结果总是 ["bei640", "-01"] ["bei640", "-02" ] ["bei640", "-03"]

我正在尝试以这种格式获取所有结果:

scan returns 一组匹配项,您可能想要 join 它们:

- new_contents = str.scan(/^ipc-(?<bng>[a-z]{3}\d{3})-r-br(?<nr>-\d{2})$/)
+ new_contents = str.scan(/^ipc-(?<bng>[a-z]{3}\d{3})-r-br(?<nr>-\d{2})$/).map(&:join)

To print everything without quotes and brackets line by line:

- f.print new_contents
+ f.puts new_contents

假设您的结果数组是

a = [["bei640", "-02"], ["bei640", "-03"]]

您可以使用 join 来获得您想要的结果

a.map{|i| i.join } #=> ["bei640-02", "bei640-03"]

或使用 mudasobwa 回答的快捷方式

a.map(&:join) #=> ["bei640-02", "bei640-03"]