Ruby:如何有选择地从文本文件中删除换行?

Ruby:如何有选择地从文本文件中删除换行?,ruby,text-processing,Ruby,Text Processing,我想编辑以下文本,以便每一行都以经销商开头:。这意味着没有换行/换行。对于以系统开头的线路,可以进行包装 ruby中的解决方案是什么样子的?谢谢 该文件位于.txt文件中 经销商:还剩5秒采取行动 经销商:hitman2714赢得奖金(9) 经销商:手牌#1684326626D 经销商:Guitou699还有5秒时间 行动 经销商:Guit·u699已超时 经销商:baj Hasan还有5秒时间 行动 经销商:baj Hasan已超时 经销商:Hitman 2714还有5秒 行动 经销商:Hit

我想编辑以下文本,以便每一行都以经销商开头:。这意味着没有换行/换行。对于以系统开头的线路,可以进行包装

ruby中的解决方案是什么样子的?谢谢

该文件位于.txt文件中

经销商:还剩5秒采取行动
经销商:hitman2714赢得奖金(9)
经销商:手牌#1684326626D
经销商:Guitou699还有5秒时间
行动
经销商:Guit·u699已超时
经销商:baj Hasan还有5秒时间
行动
经销商:baj Hasan已超时
经销商:Hitman 2714还有5秒
行动
经销商:Hitman 2714已超时
系统:每晚10000美元担保
将在20分钟后开始
经销商:经销商:手牌#1684326626D
经销商:Perspextive发布大的
25岁的盲人

previous = ''

ARGF.each_with_index do |line, i|
  line.chomp!
  unless i == 0
    if line =~ /^Dealer/ || line =~ /^System/
      puts previous
      previous = line
    else
      previous << (previous =~ /^System/ ? "\n" : " ") << line
    end
  else
    previous = line
  end
end
puts previous
所需输出:

经销商:还剩5秒采取行动
经销商:hitman2714赢得奖金(9)
经销商:手牌#1684326626D
经销商:Guitou699还有5秒时间行动
经销商:Guit·u699已超时
经销商:baj Hasan还剩5秒采取行动
经销商:baj Hasan已超时
经销商:杀手2714还有5秒 行动
经销商:Hitman 2714已超时
系统:每晚10000美元担保
将在20分钟后开始
经销商:经销商:手牌#1684326626D
经销商:Perspextive发布了25的大盲板
previous = ''

ARGF.each_with_index do |line, i|
  line.chomp!
  unless i == 0
    if line =~ /^Dealer/ || line =~ /^System/
      puts previous
      previous = line
    else
      previous << (previous =~ /^System/ ? "\n" : " ") << line
    end
  else
    previous = line
  end
end
puts previous
ARGF.每个带有索引do的线,i| line.chomp! 除非i==0 如果行=~/^DELER/| |行=~/^System/ 放在前面 前一行 其他的 上一个<代码>上一个=“” ARGF.每个带有索引do的线,i| line.chomp! 除非i==0 如果行=~/^DELER/| |行=~/^System/ 放在前面 前一行 其他的 以前的 如果不介意删除“系统”行上的换行,并且文件足够小,则可以执行以下操作:

puts ARGF.readlines.join('').gsub(/\n(?!Dealer: |System: )/, ' ')
如果不介意删除“系统”行上的换行,并且文件足够小,则可以执行以下操作:

puts ARGF.readlines.join('').gsub(/\n(?!Dealer: |System: )/, ' ')
格雷普 如果这种工具已经存在,为什么要使用ruby呢

cat oldfile | grep ^Dealer: > newfile
红宝石 如果这应该是一个更大的ruby应用程序的一部分,那么在ruby中这样做没有什么错

content= File.read(oldfile)
content= content.grep(/^Dealer:/)
File.open(newfile, "w") { |f| f.write(content) }
格雷普 如果这种工具已经存在,为什么要使用ruby呢

cat oldfile | grep ^Dealer: > newfile
红宝石 如果这应该是一个更大的ruby应用程序的一部分,那么在ruby中这样做没有什么错

content= File.read(oldfile)
content= content.grep(/^Dealer:/)
File.open(newfile, "w") { |f| f.write(content) }