2013-03-14 104 views
5

假設我有如下文件text.txt列出文本文件中出現次數的所有單詞?

she likes cats, and he likes cats too.

我想我的結果是這樣的:

she 1 
likes 2 
cats 2 
and 1 
he 1 
too 1 

如果把space , .到它會使腳本更容易,這將是精細。

是否有一個簡單的shell管道可以實現這一目標?

+0

如果這句話是「我的一隻貓重500磅,那隻貓超大尺寸!」 - 是貓的數量加上貓的數量還是別的嗎?在這句話中是否有一個單詞「s」?是否有單詞「500」和單詞「lbs」或單詞「500lbs」或其他?是否有「超級」一詞和「大小」一詞或「超大」一詞? – 2013-03-14 20:58:01

回答

18

這裏是一個一行近,親愛的我的心臟:

cat text.txt | sed 's|[,.]||g' | tr ' ' '\n' | sort | uniq -c 

桑達條標點符號(調正則表達式的味道),在TR使每行的結果一個字。

+0

你太棒了! – JackWM 2013-03-14 03:31:13

+1

然後通過一切手段按下該複選標記按鈕。 – phs 2013-03-14 03:31:30

+0

@phs +1態度很好!和幽默。 – 2013-03-14 03:33:55

0

隨着GNU awk的你可以指定記錄分隔符(RS)是的非字母字符的序列:

$ gawk -v RS='[^[:alpha:]]+' '{sum[$0]++} END{for (word in sum) print word,sum[word]}' file 
she 1 
likes 2 
and 1 
too 1 
he 1 
cats 2 

但這不會解決你的如何識別「字」的問題一般。

相關問題