ファイルの中身の文字数、ワード数、行数を表示するコマンド(他の言語の投稿求む)
すみません。
Python,Rubyでも書くつもりで居たのですが、消防団の活動日と、習い事の日と、おまけに選挙の日と、予約してた本が届いた日が重なって、とてもじゃないですけど、ちょっと前に書いたHaskellのコードを載せるのが精一杯になってしまいました。
出来れば、Haskellに詳しい方も、他の言語に詳しい方も、挑戦して頂けると幸いです。
時間が出来た時(多分、正月頃・・・)に、各コードのベンチマーク結果を載せた日記を上げます。
条件としては、空白や改行は一文字に数えてません。純粋に文字らしいものが書かれたもののみ、1文字とカウントしています。
条件違った・・・。
条件としては、改行や空白文字がいくつ並んでいても、空白1文字として数えます。
そして、ベンチマークに丁度良いデータも用意できました。
スーパーπで生成できる一番大きなπ。3355万桁を収めたpi.datがテキストデータだったので、それを今回は食わせてみようと思います。
あと、来週は3連休の休日も全部潰れて仕事なので、日記も、コメントの返信も出来そうにないです。
申し訳ない。
しかも、せっかくnobsunさん、通りすがりさんに教えて頂いた書き方を習う前のコードを載せます・・・・。
ええ、思い切りラムダ式使ってます。
むしろ、メインの処理だと言っていいくらい・・・・。
では、どうぞ。Haskellのコードです。
import System.Environment main = getArgs >>= \fnames -> mapM readFile fnames >>= mapM_ (\(x,y) -> putStrLn $ concat [x, "\nchars = ", show.length.unwords $ words y, " words = ", show.length $ words y, " lines = ", show.length $ lines y, "\n"]).zip fnames
でも、まあ、これで私のまともに書いたコードの貯蔵は無くなりました。
次回からは、ちゃんとお二人の助言を活かせたコードを公開できると思います。
多分・・・・きっと・・・出来ると、良いなぁ・・・。
正直、次回は正月前後になると思いますが、次回は、生まれて初めて、検索と言う処理を作ってみようと思います。
検索したいキーワードと、ファイル名を渡すと、そのファイルの中のキーワードの位置(複数)のリストを表示する。と言うのに挑戦したいと思います。
(これは、ベンチマークの後、余裕が有ったら・・・)