列出具有出现次数的文本文件中的所有单词?

时间:2013-03-14 03:25:28

标签: bash sed awk

假设我有以下文件text.txt

she likes cats, and he likes cats too.

我希望我的结果如下:

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

如果将space , .放入其中会使脚本更容易,那就没问题了。

是否有可以实现此目的的简单shell管道?

2 个答案:

答案 0 :(得分:20)

这是我的心脏附近的单线:

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

sed剥离标点符号(将正则表达式调整为品味),tr每行输出一个单词。

答案 1 :(得分: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

但这并不能解决你如何识别“单词”的问题。