Perlとかで書けば出来ますが、grepとかwcとかをうまく使えば、コマンドだけで簡単に出来そうな気がするのに、思いつきません。
簡単に出来る方法を教えてください。
http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html
Manpage of GREP
grep -c ”対象の単語” テキストファイル名
では?
wcコマンドの”-w(--words)”オプションでは駄目ですか?
wc -w コマンドは、そのテキスト中に含まれる単語数をカウントでは。
テキスト中に含まれるとある単語「foo」の数を数えたいのですが。
すんごい単純なことなにに、簡単な方法が思いつかない…
http://www.hatena.ne.jp/1135146114
人力検索はてな - Unixで、テキスト中にマッチする単語の「個数」を数えたいです。 Perlとかで書けば出来ますが、grepとかwcとかをうまく使えば、コマンドだけで簡単に出来そうな気がするの..
URLはダミーです
perl -pe ’s/foo/foo¥n/g’ file | grep foo | wc -l
# perl使ってるじゃん...でもsedを無理に使いたくないなぁ...
うーん、やっぱりperl使わないと無理ですかね。
普通にある要望だと思うので、てっきりそのものが出来るコマンドとオプションの組み合わせがあるのかな、と思ってたのですが。
Perl.com: The Source for Perl -- perl development, conferences
URLはダミーです。
失礼しました。単語の区切りを空白文字とするなら、次の様な感じでどうでしょうか?コマンドラインから実行します。
perl -an -e ’$total+= grep(/<調べたい単語>/,@F);END{print ”$total¥n”;}’ <単語の含まれるファイル名>
例えば”apple”という単語が”fruits.txt”というテキスト中にいくつ出てくるかを調べるなら
perl -an -e ’$total+= grep(/apple/,@F);END{print ”$total¥n”;}’ fruits.txt
といった具合になります。
今回の場合空白区切りなのでこれでいけますが、やはりperl使わないと無理なんですね。
もう一つ二つ見て、コマンドだけで簡単にいかないようなら、このへんであきらめたいと思います。
http://www.linux.or.jp/JM/html/GNU_sed/man1/sed.1.html
Manpage of SED
URL は半分ダミーです。
下記のようなのはどうでしょう?
sed ’s/[ ¥t]/¥n/g’ ファイル名 | grep 単語 | wc -l
sed で単語を全て1行ずつにして grep をかけて wc で数える、という方法です。
英語のように、単語が空白文字で区切られている、という条件がつきますが...。
うーん、なるほど。
空白で区切れてる必要があるので汎用的ではないですが、いけますね。
しかしperlで数えちゃったほうが素直な気もしてきました…
-c だと、行数なので、同一行に複数の対象単語があった場合、合わなくなってしまいませんか?
実は自分もそれでいけると思って、さっくりと期待を裏切られました。
あと、grepがSolarisの標準grepなので、GNU grepと違うのですが、たぶん同じ動作だと思います。
念のため確認してみます。