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 管道可以实现这一点?

4

2 回答 2

20

这是我心中亲近的单线:

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

sed 去除标点符号(调整正则表达式以适应口味),tr 将结果每行一个单词。

于 2013-03-14T03:28:51.830 回答
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

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

于 2013-03-14T21:00:08.950 回答