dポイントプレゼントキャンペーン実施中!

ruby初心者です。
よろしくお願いします。

以下のようなcsvファイルからユーザーの入力内容をキーに
該当する行を検索して表示させるというような処理を実行したいです。

name,email,tel
andy,andy@yahoo.co.jp,090xxxxxxxx
bob,bob@yahoo.co.jp,090xxxxxxxx
amy,amy@yahoo.co.jp,090xxxxxxxx

入力例:amy
出力:amy,amy@yahoo.co.jp,090xxxxxxxx
(該当する行を全て出力させたい)

ご教授よろしくお願い致します。

環境:Win7、ruby2.0

A 回答 (2件)

-----------csv.rb-------------


require "csv"

print "Enter the key :"
key = (gets.to_s).chomp
CSV.open("test.csv","r") do |csv|
csv.each do |row|
if row[0] == key
print row
end
end
end
------------------------------

----------test.csv------------
name,email,tel
andy,andy@yahoo.co.jp,090xxxxxxxx
bob,bob@yahoo.co.jp,090xxxxxxxx
amy,amy@yahoo.co.jp,090xxxxxxxx
------------------------------

動作確認:ruby 2.0.0p247 (2013-06-27) [i386-mingw32]
※ Ruby 1.8系だとCSVメソッドの仕様が変更になっているので注意。
あと、文字コード認識も(ruby 1.8系は)甘いので、Ruby 2.0系じゃないと動かないです。
    • good
    • 1

該当する行とは?name欄が一致すると言うことでいいですか?



ruby -nle "puts $_ if /^amy,/" filename.txt

Windows標準機能で、

findstr /b "amy," filename.txt

でもOK。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!