红宝石猫壳类似

时间:2012-07-17 19:00:28

标签: ruby

我是Ruby新手。我过去使用过shell。我正在将shell程序转换为ruby。我有以下命令

cmd="cat -n " + infile + " | grep '127.0.0.1 '" + site
f = %x[#{cmd}]

shell cat命令返回我要查找的行和行号。我希望能够在不使用shell的情况下在ruby中做类似的事情。可能需要将此程序移植到Windows。我可以在ruby中使用grep函数但是如何返回行号而不必遍历文件中的一百万行。感谢。

1 个答案:

答案 0 :(得分:3)

这是一个小红宝石功能,可以满足您的要求。你必须循环遍历每一行,但是grep也是这样做的 - 你只是自己不必这样做。幸运的是,ruby使循环变得容易:

def mygrep(filename, regex)
    result = []
    File.open(filename) do |f|
        f.each_with_index do |l, i|
            result << [i, l] if regex =~ l
        end
    end
    return result
end

干杯!