>>695
たしかに、昔に比べれば仮想化が当たり前になりましたしそうかも知れませんね。
急ごしらえですが、昼間寝てしまったので3時から急ごしらえで作りました。
使い勝手悪いので、行番号振ったりと改良の余地ありです。

import System.Environment
import Data.List

filterOfLine word = unlines.(filter (isInfixOf word)).lines

main = getArgs >>= \(file:word:_) -> readFile file >>= putStrLn.filterOfLine word

IOな関数は全部mainの方にあるので、自作するのはfilterOfLineのunlines,filter,isInfixOf,linesの4つということになりますね。