1

私はRubyが初めてです。以前はシェルを使用していました。シェルプログラムを ruby​​ に変換しています。次のコマンドがあります

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

シェルの cat コマンドは、探している行と行番号を返します。シェルを使用せずにRubyで同様のことができるようにしたいと思います。このプログラムを Windows に移植する必要があるかもしれません。ruby で grep 関数を使用できますが、ファイル内の 100 万行をループせずに行番号を返すにはどうすればよいですか。ありがとう。

4

1 に答える 1

3

これは、あなたが求めていることを実行する小さな ruby​​ 関数です。各行をループする必要がありますが、それ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

乾杯!

于 2012-07-17T19:16:00.377 に答える