Ruby:如何有选择地从文本文件中删除换行?
我想编辑以下文本,以便每一行都以经销商开头:。这意味着没有换行/换行。对于以系统开头的线路,可以进行包装 ruby中的解决方案是什么样子的?谢谢 该文件位于.txt文件中 经销商:还剩5秒采取行动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
经销商: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) }