寻找在Ruby中正则表达式处理文本文件的惯用方法

时间:2011-08-12 16:20:20

标签: ruby regex idiomatic

我正在寻找在Ruby中正则表达式处理文本文件的惯用方法,这是迄今为止我能够提出的最好的方法。它会删除所有"个字符:

#!/usr/bin/env ruby

src_name = ARGV[0]
dest_name = ARGV[1]
File.open(src_name, "r+") { |f| 
  new_lines = f.map { |l| 
    l = l.gsub(/"/,'')
  }
  dest_file = File.new(dest_name,"w")
  new_lines.each { |l|
    dest_file.puts l
  }
}

必须有更好的东西。例如:

  • 为什么我必须重写文件,我不应该用管道做更聪明的事情吗?
  • 我正在逐行完成所有工作,似乎我应该能够解决输入和输出流的问题。

2 个答案:

答案 0 :(得分:2)

欧根的答案很棒。这与“普通”脚本相同。

#!/usr/bin/env ruby
STDOUT << STDIN.read.gsub(/"/,'') 

答案 1 :(得分:1)

如果您要进行简单的替换,可以在命令行执行此操作:

ruby -e '$_.gsub!(/"/,"")' -i.bak -p INPUT_FILE.txt

它运行你传递给-e标志的任何参数,用结果替换INPUT_FILE.txt的内容,只是为了安全保存原始文件的副本,扩展名为.bak。