人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Unixで、テキスト中にマッチする単語の「個数」を数えたいです。
Perlとかで書けば出来ますが、grepとかwcとかをうまく使えば、コマンドだけで簡単に出来そうな気がするのに、思いつきません。
簡単に出来る方法を教えてください。

●質問者: stealthinu
●カテゴリ:コンピュータ
✍キーワード:grep Perl UNIX コマンド テキスト
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● くまっぷす
●5ポイント

http://www.linux.or.jp/JM/html/GNU_grep/man1/grep.1.html

Manpage of GREP

grep -c ”対象の単語” テキストファイル名

では?

◎質問者からの返答

-c だと、行数なので、同一行に複数の対象単語があった場合、合わなくなってしまいませんか?

実は自分もそれでいけると思って、さっくりと期待を裏切られました。

あと、grepがSolarisの標準grepなので、GNU grepと違うのですが、たぶん同じ動作だと思います。

念のため確認してみます。


2 ● cubick
●5ポイント

http://www.linux.or.jp/JM/html/GNU_textutils/man1/wc.1.html

Manpage of WC

wcコマンドの”-w(--words)”オプションでは駄目ですか?

◎質問者からの返答

wc -w コマンドは、そのテキスト中に含まれる単語数をカウントでは。

テキスト中に含まれるとある単語「foo」の数を数えたいのですが。

すんごい単純なことなにに、簡単な方法が思いつかない…


3 ● dev_zer0
●40ポイント

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使わないと無理ですかね。

普通にある要望だと思うので、てっきりそのものが出来るコマンドとオプションの組み合わせがあるのかな、と思ってたのですが。


4 ● cubick
●15ポイント

http://www.perl.com/

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使わないと無理なんですね。

もう一つ二つ見て、コマンドだけで簡単にいかないようなら、このへんであきらめたいと思います。


5 ● JULY
●15ポイント

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で数えちゃったほうが素直な気もしてきました…

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ