Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 循环浏览包含节的文本文件_Ruby_Loops_Text_Each - Fatal编程技术网

Ruby 循环浏览包含节的文本文件

Ruby 循环浏览包含节的文本文件,ruby,loops,text,each,Ruby,Loops,Text,Each,我有一个大约11000行的文件。它是这样建立起来的: some info 1 some cool info 1 some other info 1 foo bar 1 some info 2 some cool info 2 some other info 2 foo bar 2 我想建立一个循环来完成这项工作,并希望: data1 = line1 data2 = line2 data3 = line3 data4 = line4 # do stuff with the data 1,2,

我有一个大约11000行的文件。它是这样建立起来的:

some info 1
some cool info 1
some other info 1
foo bar 1


some info 2
some cool info 2
some other info 2
foo bar 2
我想建立一个循环来完成这项工作,并希望:

data1 = line1
data2 = line2
data3 = line3
data4 = line4
# do stuff with the data 1,2,3,4
data1 = line7
data2 = line8
data3 = line9
data4 = line10
# do stuff with the data 1,2,3,4

对文本文件中的所有内容执行此操作。有人有什么想法吗?手动执行十行是可以的,但是当大约11000行时,我宁愿自动执行。

文件上使用
对象将非常完美地完成这项工作。虽然这没有考虑到空行,但在另一个答案中有一个很好的技巧来处理这个问题

谢谢。这正是我要找的。
File.open('/tmp/lines', 'r').each_slice(6) do |group|
  # remove newlines
  group.map! {|item| item.chomp }

  data1, data2, data3, data4 = group

  # do something with the variables...
end
input = <<-EOF
some info 1
some cool info 1
some other info 1
foo bar 1



some info 2
some cool info 2
some other info 2
foo bar 2
EOF

input.lines.reject(&:empty?).each_slice(4) do |data|
  puts data[0]
  puts data[1]
  puts data[2]
  puts data[3]
  puts '-----'
end
some info 1
some cool info 1
some other info 1
foo bar 1
-----
some info 2
some cool info 2
some other info 2
foo bar 2
-----