STDIN は前方向にしか進めないですよ

(1) 一旦ファイルに書き出したのを利用する
(2)そんなにでかくないのなら read で読み込んだものを利用する

の2通りがあります。
大きいファイル、環境にも夜でしょうが 5MB あたりを境に (1) か (2) かを使い分ければ良いかと思います。