Ruby(読み込み)

Rubyのテキスト読み込みです。

例のごとく読み込むファイルを作成します。

takk@deb9:~$ seq 25 | pr -t5J | tee sample.txt
1       6       11      16      21
2       7       12      17      22
3       8       13      18      23
4       9       14      19      24
5       10      15      20      25
takk@deb9:~$

openとgetsを使って読み込みしてみます。getsメソッドで一行だけ読み込んで表示するだけのスクリプトです。

takk@deb9:~$ cat read.rb
f=open("sample.txt")
line = f.gets
print line
f.close()

実行するとsample.txtの先頭の一行だけ表示されます。

takk@deb9:~$ ruby read.rb
1       6       11      16      21
takk@deb9:~$ 

繰り返し読み込んで全部表示するには、whileを使います。どの言語も似たようなものですね。

takk@deb9:~$ cat read.rb
f=open("sample.txt")
while line = f.gets
        print line
end
f.close()

実行結果です。

takk@deb9:~$ ruby read.rb
1       6       11      16      21
2       7       12      17      22
3       8       13      18      23
4       9       14      19      24
5       10      15      20      25
takk@deb9:~$ 

File.readで全行を一括で読み込めます。

takk@deb9:~$ cat read.rb
lines=File.read("sample.txt")
print lines
takk@deb9:~$ ruby read.rb
1       6       11      16      21
2       7       12      17      22
3       8       13      18      23
4       9       14      19      24
5       10      15      20      25
takk@deb9:~$ 

標準入力は$stdinで読めます。

takk@deb9:~$ seq 10 | ruby -e 'while line=$stdin.gets;print line;end'
1
2
3
4
5
6
7
8
9
10
takk@deb9:~$

しかもgetsの場合は、$stdinから読み込むのがデフォルトなので省略できます。

takk@deb9:~$ seq 10 | ruby -e 'while line=gets;print line;end'
1
2
3
4
5
6
7
8
9
10
takk@deb9:~$

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA