如何使用ruby打开文本文件,并删除包含“关键短语”的行。
我不想只删除关键短语,我需要包含要删除的短语的完整行。
答案 0 :(得分:5)
这样的事情:
File.open(output_file, "w") do |ofile|
File.foreach(input_file) do |iline|
ofile.puts(iline) unless iline =~ Key_phrase
end
end
答案 1 :(得分:1)
这是一次性的独立任务吗?编辑文件到位? 如果是这样,以下单行可能很方便:
ruby -i.bak -ne 'print unless /key phrase/' file-to-hack.txt
这会更改文件,并备份原始文件。 如果您希望将此作为更大程序的一部分,请为每行添加循环..
答案 2 :(得分:0)
另一种方法是在ruby中使用inplace编辑(而不是从命令行):
#!/usr/bin/ruby
def inplace_edit(file, bak, &block)
old_argv = Array.new(ARGV)
old_stdout = $stdout
ARGV.replace [file]
ARGF.inplace_mode = bak
ARGF.lines do |line|
yield line
end
ARGV.replace old_argv
$stdout = old_stdout
end
inplace_edit 'test.txt', '.bak' do |line|
print line unless line.match(/something/)
print line.gsub(/search1/,"replace1")
end
如果您不想创建备份,请将“.bak”更改为“”。