将正则表达式结果写入新文件
Writing regex result into a new file
我有一个设备列表:
- ipc-bei640-r-br-01
- ipc-bei640-r-br-02
- ipc-bei640-r-br-03
- ipc-bei640-r-br-04
- ipc-bei640-r-br-05
- ipc-bem640-r-br-01
- ipc-bem640-r-br-02
- ipc-bem640-r-br-03
- ipc-crg660-r-br-02
- ipc-geb680-r-br-04
- ipc-lgv630-r-br-01
这个小 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"]
我正在尝试以这种格式获取所有结果:
- bei640-01
- bei640-02
- bei640-03
- bei640-04
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"]
我有一个设备列表:
- ipc-bei640-r-br-01
- ipc-bei640-r-br-02
- ipc-bei640-r-br-03
- ipc-bei640-r-br-04
- ipc-bei640-r-br-05
- ipc-bem640-r-br-01
- ipc-bem640-r-br-02
- ipc-bem640-r-br-03
- ipc-crg660-r-br-02
- ipc-geb680-r-br-04
- ipc-lgv630-r-br-01
这个小 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"]
我正在尝试以这种格式获取所有结果:
- bei640-01
- bei640-02
- bei640-03
- bei640-04
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"]