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:~$
コメント