打印从红宝石底部开始的线条

时间:2015-01-19 00:28:53

标签: ruby

假设我在ruby中有一个变量arr,它包含300多行字符串。每当我查看上述变量时,它总会打印出大量的行。有没有办法在ruby中显示它们并专注于最后一行? (就像tail命令一样。)

1 个答案:

答案 0 :(得分:0)

如果您只想要最后3行,请执行以下操作:arr.split[-3,3]

以下是一个例子:

$ irb
irb(main):001:0> arr = "foo
irb(main):002:0" bar
irb(main):003:0" baz
irb(main):004:0" 1
irb(main):005:0" 2
irb(main):006:0" 3
irb(main):007:0" 4
irb(main):008:0" 5
irb(main):009:0" 6
irb(main):010:0" 7
irb(main):011:0" 8
irb(main):012:0" 9
irb(main):013:0" 10
irb(main):014:0" the
irb(main):015:0" end
irb(main):016:0" "
=> "foo\nbar\nbaz\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\nthe\nend\n"
irb(main):017:0> arr.split[-3,3]
=> ["10", "the", "end"]

如果您的字符串非常大,并且您对典型的行长度有一些了解,并且性能是一个问题,并且您可以容忍它有时不准确,您可能会尝试仅复制尾端,然后将其拆分。像这样:

irb(main):019:0* arr[-20,20]
=> "\n6\n7\n8\n9\n10\nthe\nend\n"
irb(main):020:0> arr[-20,20].split[-3,3]
=> ["10", "the", "end"]
irb(main):021:0> 

因此,如果这些是Web服务器日志条目,它们可能每行运行~200个字符。让我们说你想显示最后3行。抓住字符串的最后1000个字符,大部分时间你都会处于良好的状态。

希望这有帮助!