使用关键字grep输入文件,然后生成新报告

时间:2014-12-14 00:38:52

标签: ruby

cat infile

abc 123 678
sda 234 345 321
xyz 234 456 678

我需要grep关键字sda的文件,并报告第一列和最后一列。

sda has the value of 321

如果你知道bash脚本,我需要一个Ruby中的函数,如下面的bash(awk)脚本:

awk '/sda/{print $1 " has the value of " $NF}' infile

2 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

File.open("infile", "r").each_line do |line|
  next unless line =~ /^sda/ # don't process the line unless it starts with "sda"
  entries = line.split(" ")
  var1 = entries.first
  var2 = entries.last
  puts "#{var1} has the value of #{var2}"
end

我不知道你在哪里定义" sda"匹配器。如果它已修好,你可以把它放在那里。 如果没有,您可以尝试从命令行参数中获取它。

答案 1 :(得分:1)

key, *_, value = line.split
next unless key == 'sda' # or "next if key != 'sda'"
puts your_string

或者,您可以在开头使用正则表达式匹配器,以查看该行是否以“' sda”开头。或不。