Hatena::Grouprubyist

うんたらかんたらRuby RSSフィード

2009-04-27grepでマッチした前のn行を出力

grepでマッチした前のn行を出力

grepでマッチした前のn行を出力 - うんたらかんたらRuby を含むブックマーク はてなブックマーク - grepでマッチした前のn行を出力 - うんたらかんたらRuby


今度は前

あんまり需要無いとは思うが、なんとなく作ってみた。

aaa.txtの中から文字列をgrep

grep_word = (ARGV[0])
out_num = (ARGV[1]).to_i

out_lines = Array.new(out_num)
match_num = 0
File.open('aaa.txt', 'r').each_with_index do |line, i|
  #マッチング処理
  if line =~ /#{grep_word}/
    match_num = i
    break
  else
    #マッチング以前を保持
    out_lines.shift
    out_lines << line
  end
end
out_lines.each { |x| puts x}

aaa.txt

0aaaxxxxxxxxxxxxxxx
1bbbxxxxxxxxxxxxxxx
2cccxxxxxxxxxxxxxxx
3dddxxxxxxxxxxxxxxx
4eeexxxxxxxxxxxxxxx
5fffxxxxxxxxxxxxxxx

結果

./grep_before.rb ddd 2
1bbbxxxxxxxxxxxxxxx
2cccxxxxxxxxxxxxxxx

関連

grepでマッチした後のn行を出力 - うんたらかんたらRuby - Rubyist

トラックバック - http://rubyist.g.hatena.ne.jp/rochefort/20090427