Ruby ファイルから指定した文字列のある行のみを取得する

  • 作成日 2021.12.12
  • 更新日 2022.04.30
  • Ruby
Ruby ファイルから指定した文字列のある行のみを取得する

Rubyで、readlinesとgrepを使用して、ファイルから指定した文字列のある行のみを取得するサンプルコードを記述してます。rubyのバージョンは2.7.2を使用してます。

環境

  • OS windows10 pro 64bit
  • ruby 2.7.2p137

readlines使い方

readlinesを使用すれば、ファイルの内容を全部読み込んで配列化することが可能です。

hoge.txt内容

ファイルを読み込んで配列化する

l = File.readlines("hoge.txt")
p l
# ["hogefoo\n", "foohoge\n", "foofoo\n", "hogefoofoo\n", "foofoo"]

grep使い方

grepを使用すれば、配列から指定した文字列が含まれているもののみ抽出することが可能です。

arr = ["aaa", "bbb", "cac", "dad", "eee"]

p arr.grep(/a/)

# ["aaa", "cac", "dad"]

指定した文字列のある行のみを取得

このreadlinesを利用して、grepした結果から改行を削除することで、指定した文字列が含まれている行のみを取得することが可能です。

# ファイルの内容を全部読み込んでgrep後に、配列にする
lines = File.readlines("hoge.txt").grep(/hoge/)

# 改行文字を削除
lines = lines.map { |x| x.chomp }

# 表示
p lines

# ["hogefoo", "foohoge", "hogefoofoo"]