我是Ruby新手。我过去使用过shell。我正在将shell程序转换为ruby。我有以下命令
cmd="cat -n " + infile + " | grep '127.0.0.1 '" + site
f = %x[#{cmd}]
shell cat命令返回我要查找的行和行号。我希望能够在不使用shell的情况下在ruby中做类似的事情。可能需要将此程序移植到Windows。我可以在ruby中使用grep函数但是如何返回行号而不必遍历文件中的一百万行。感谢。
答案 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
干杯!