【问题标题】:Writing regex result into a new file将正则表达式结果写入新文件
【发布时间】:2015-05-21 09:07:30
【问题描述】:

我有一个设备列表:

  • 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

【问题讨论】:

    标签: ruby regex stdout


    【解决方案1】:

    scan 返回一个匹配数组,你可能想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
    

    【讨论】:

    • -/+ 代表什么?
    • 这是用于删除/添加行的标准 git/mercurial/svn 语法。
    • 啊,我明白了:)
    • 好吧,它看起来比以前好多了,但是有没有办法我可以删除 " 和 ,并逐行列出设备?文件看起来像这样:["bei640-01", " bei640-02”、“bei640-03”、“bei640-04”、“bei640-05”、“bem640-01”、“bem640-02”、
    • 当然。将f.print new_contents 更改为f.puts new_contents
    【解决方案2】:

    假设你的结果数组是

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

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

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

    或使用快捷方式作为mudasobwa回答

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

    【讨论】:

      猜你喜欢
      • 2017-11-24
      • 2017-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多