Utiliser grep pour obtenir des lignes de 12 lettres seulement

Utilisation de grep

Combien de lignes de 12 lettres seulement sont-elles dans testing.txt?

extrait de testing.txt

tyler1 Tanktop_Paedo [email protected] [email protected] justincrump cranges10 [email protected] soulfunkbrotha timetolearnz [email protected] Fire_Crazy helloworldad [email protected] 

de cet extrait, je veux obtenir un résultat de 2. (helloworldad et timetolearnz)

Je veux vérifier chaque ligne et grep seulement celles qui ont 12 caractères dans chaque ligne. Je ne peux pas penser à un moyen de le faire avec grep cependant.

Pour l’alphabet seulement, je pense pouvoir utiliser

 grep [A-Za-z] testing.txt 

Cependant, comment puis-je faire en sorte que seuls les caractères [A-Za-z] apparaissent dans ces 12 caractères?

Vous pouvez le faire avec l’expression rationnelle étendue -E et en spécifiant que la correspondance correspond exactement à {12} caractères du début ^ pour terminer $

 $ grep -E "^[A-Za-z]{12}$" testing.txt timetolearnz helloworldad 

Ou si vous voulez obtenir le nombre de lignes que vous pouvez utiliser

 $ grep -cE "^[A-Za-z]{12}$" testing.txt 2 

grep prend en charge la correspondance et le comptage sur toute la ligne, par exemple:

 grep -xc '[[:alpha:]]\{12\}' testing.txt 

Sortie:

 2 

La classe de caractères [:alpha:] est une autre façon de dire [A-Za-z] . Voir la section 3.2 des pages d’information: info grep 'Regular Expressions' 'Character Classes and Bracket Expressions' pour plus d’informations à ce sujet. Ou consultez le manuel PDF en ligne .