2017-09-20 6 views

Répondre

0

Vous pouvez aussi essayer ceci:

grep -Ewcv "*[aeiou]*" filename.txt 
0

Ces deux commandes font en effet des choses différentes, et aucun d'eux ne fait ce que vous pensez:

grep -c [^[^aeiouAEIOU]] filename.txt 

Vous ne pouvez pas vraiment nid [^...] expressions . Au lieu de cela, cette expression régulière est interprétée comme [^[^aeiouAEIOU] concaténée avec ]. C'est-à-dire, il va correspondre n'importe où dans la ligne toute combinaison d'un caractère qui n'est pas [, ^, ou une voyelle, et ]. Par exemple, ces chaînes correspondent: b], c], #], ;]; et ceux-ci ne vont pas: a], E], c, d. Et « sur la première ligne » signifie que la commande ci-dessus grep comptera des lignes telles que aaab], i uc], etc.

Quant à votre deuxième commande,

grep -v -c [^aeiouAEIOU] filename.txt 

Ici vous avez la double négation. Tout d'abord, [^aeiouAEIOU] correspond à n'importe quel caractère autre qu'une voyelle. D'autre part, l'option -v transmise à grep inverse la correspondance, de sorte qu'elle correspond à toutes les lignes qui ne correspondent pas à [^aeiouAEIOU]. L'effet final est, fondamentalement, que vous dites grep: "Comptez toutes les lignes qui n'ont pas de symboles autres que aeiouAEIOU". C'est-à-dire, il ne comptera que les lignes qui ne contiennent que des voyelles.

Deux commandes qui fait devrait vous donner le nombre de lignes qui ne commencent pas par une voyelle sont:

grep -c ^[^aeiouAEIOU] filename.txt 
grep -v -c ^[aeiouAEIOU] filename.txt