我有一个包含推文的文本文件,我需要计算推文中提到某个单词的次数。例如,该文件包含:
Apple iPhone X is going to worth a fortune
The iPhone X is Apple's latest flagship iPhone. How will it pit against it's competitors?
假设我想计算文件中提到 iPhone 这个词的次数。这就是我尝试过的。
cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l
它确实有效,但我对 unix 中的“wc”命令感到困惑。如果我尝试这样的事情有什么区别:
cut -f 1 Tweet_Data | grep -c "iPhone"
在哪里使用 -c 来代替?这两种方法都会在一个充满推文的大文件中产生不同的结果,我对它的工作原理感到困惑。哪种方法是计算出现次数的正确方法?
答案1
考虑到这样的要求,我会使用 GNU grep (对于-o
选项),然后传递它来wc
计算出现的总数:
$ grep -o -i iphone Tweet_Data | wc -l
3
明文grep -c
上的数据会统计数量线匹配的数量,而不是总数字那场比赛。使用该-o
选项告诉 grep 在其自己的行上输出每个匹配项,无论在原始行中找到多少次匹配项。
wc -l
告诉wc
实用程序计算行数。 grep 将每个匹配项放在自己的行中后,这是该单词在输入中出现的总数。
如果 GNU grep 不可用(或不需要),您可以转换输入,tr
使每个单词都在自己的行上,然后使用grep -c
计数:
$ tr '[:space:]' '[\n*]' < Tweet_Data | grep -i -c iphone
3
答案2
最简单的方法是,
grep -wc "your_text" FileName
对你来说将会是,
grep -wc "iPhone" Tweet_Data