À supposer que soit lisible a priori un fichier "
source" intitulé par exemple
docu.txt et localisé (toujours en exemple) sur le
Bureau, alors une commande
grep assortie d'un
pipe simple :
Bloc de code:
grep -o 'pattern' Desktop/docu.txt | wc -l
retourne le nombre exact d'occurences de '
pattern' (un mot choisi, ou un caractère, ou encore une expression) dans le fichier.
Mais si l'on aime mieux se compliquer la vie avec
awk (par exemple), alors une commande :
Bloc de code:
awk -F 'pattern' '{ if ( NF > 0 ) n += NF - 1 }; END { print n }' Desktop/docu.txt
produirait le même résultat.
À supposer qu'il y ait plus d'un fichier, soit toujours en exemple
docu.txt et
fichier.rtf sur le
Bureau, alors il suffirait de les aligner en cibles de
grep ainsi :
Bloc de code:
grep -o 'pattern' Desktop/docu.txt Desktop/fichier.rtf | wc -l
ou pareillement dans la variante
awk ainsi :
Bloc de code:
awk -F 'pattern' '{ if ( NF > 0 ) n += NF - 1 }; END { print n }' Desktop/docu.txt Desktop/fichier.rtf
Mais pour l'amateur de
trombones rallonges à coulisses, il serait encore possible de partir d'un
cat préalable qui refilerait le flux de lecture des fichiers par un premier
pipe à
grep ainsi :
Bloc de code:
cat Desktop/docu.txt Desktop/fichier.rtf | grep -o 'pattern' | wc -l
ou dans la variante
awk ainsi :
Bloc de code:
cat Desktop/docu.txt Desktop/fichier.rtf | awk -F 'pattern' '{ if ( NF > 0 ) n += NF - 1 }; END { print n }'
Mais comme remarqué par
luc1en :
ça fonctionnerait dans un fichier au format propriétaire tel que xlsx ? Spotlight trouve des chaînes de caractère, mais est-ce qu'il fonctionne sur la base de grep ?
=> zéro pointé avec un fichier excel
.xlsx qui n'est pas lisible en "
source". Mieux vaut donc recourir au procédé de
Bernard (aka:
Aliboron)
