我想在文本文件中找到 10 个最常见的单词。首先,解决方案应该针对击键进行优化(换句话说 - 我的时间)。其次,对于业绩。以下是我目前获得前 10 名的条件:
cat test.txt | tr -c '[:alnum:]' '[\n*]' | uniq -c | sort -nr | head -10
6 k
2 g
2 e
2 a
1 r
1 k22
1 k
1 f
1 eeeeeeeeeeeeeeeeeeeee
1 d
Run Code Online (Sandbox Code Playgroud)
我可以制作一个 java、python 等程序,我将 (word, numberOfOccurences) 存储在字典中并对值进行排序,或者我可以使用 MapReduce,但我针对击键进行了优化。
是否存在误报?有没有更好的办法?
我正在从文本中删除停用词,大致使用此 代码
我有以下
$ cat file
file
types
extensions
$ cat stopwords
i
file
types
Run Code Online (Sandbox Code Playgroud)
grep -vwFf stopwords file
我期待结果:
extensions
但我得到了(我认为不正确)
file
extensions
Run Code Online (Sandbox Code Playgroud)
就好像file
在停用词文件中跳过了该词。现在是很酷的一点:如果我修改停用词文件,通过将i
第一行的单个单词/字母更改为除f
, i
, l
,之外的任何其他 ascii 字母e
,那么相同的 grep 命令会给我一个不同且正确的结果extensions
。
这里发生了什么,我该如何解决?
我在 Mac OSX GNU bash 版本 4.4.12(1) 上使用 grep (BSD grep) 2.5.1-FreeBSD