【发布时间】:2013-01-10 06:11:08
【问题描述】:
我想看看文件/行中提到了多少次特定单词。
我的虚拟示例如下所示:
cat words
blue
red
green
yellow
cat text
TEXTTEXTblueTEXTTEXTblue
TEXTTEXTgreenblueTEXTTEXT
TEXTTEXyeowTTEXTTEXTTEXT
我正在这样做:
for i in $(cat words); do grep "$i" text | wc >> output; done
cat output
2 2 51
0 0 0
1 1 26
0 0 0
但我真正想要的是:
1.用作变量的词;
2. 在多少行(除了文本命中)中找到了单词。
首选输出如下所示:
blue 3 2
red 0 0
green 1 1
yellow 0 0
$1 - 被 grep'ed 的变量
$2 - 在文本中找到变量的次数
$3 - 找到了多少行变量
希望有人可以使用 grep、awk、sed 帮助我完成此操作,因为它们对于大型数据集来说足够快,但 Perl 单行也可以帮助我。
编辑
试过了
for i in $(cat words); do grep "$i" text > out_${i}; done && wc out*
它看起来不错,但有些单词超过 300 个字母,所以我无法创建像这个单词一样命名的文件。
【问题讨论】: