我想看看文件/行中提到了多少次特定的单词。
我的虚拟示例如下所示:
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 个字母,所以我无法创建像单词一样命名的文件。