Je veux voir combien de fois un mot spécifique a été mentionné dans le fichier/les lignes.
Mes exemples fictifs ressemblent à ceci :
cat words
blue
red
green
yellow
cat text
TEXTTEXTblueTEXTTEXTblue
TEXTTEXTgreenblueTEXTTEXT
TEXTTEXyeowTTEXTTEXTTEXT
C'est ce que je fais :
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
Mais ce que je veux vraiment obtenir est :
1. Mot qui a été utilisé comme variable ;
2. Dans combien de lignes (en plus des occurrences de texte) le mot a été trouvé.
Il est préférable que la sortie ressemble à ceci :
blue 3 2
red 0 0
green 1 1
yellow 0 0
$1 - variable qui a été grep'ed
$2 - combien de fois la variable a été trouvée dans le texte
$3 - dans combien de lignes la variable a été trouvée
J'espère que quelqu'un pourra m'aider à faire cela avec grep, awk, sed car ils sont assez rapides pour le grand ensemble de données, mais Perl one liner m'aiderait aussi.
Modifier
J'ai essayé ça.
for i in $(cat words); do grep "$i" text > out_${i}; done && wc out*
et ça a l'air sympa, mais certains mots ont plus de 300 lettres et je ne peux pas créer de fichier nommé comme le mot.