Comment filtrer les lignes d’un fichier texte de longueur 8 et se terminant par .com?

J’ai une liste d’un million de noms de domaine sous name.txt

 hello.com abc.com gogogo.us goodbye.me ... ... 

Comment puis-je canaliser uniquement les noms de domaine avec 8 lettres (y compris le .com ) et ne se termine que par .com à names_new.txt ?

Je cherche une commande simple et non un script ou quoi que ce soit.

grep est le premier outil à saisir pour la correspondance de modèle:

 egrep -x '[az]{4}\.com' name.txt > newname.txt 

Essayer

  egrep "^[az][az][az][az]\.com$" name.txt > names_new.txt 

Utilisez Awk. Le nom de domaine est divisé par . dans les champs.

Le premier champ est testé pour la longueur 4, car le .com ajoute 4 autres caractères.

Le deuxième champ doit contenir com .

Lorsque les deux conditions sont remplies, la ligne est imprimée.

 cat name.txt |awk -F. '((length($1)==4)&&($2=="com")){print;}' > names_new.txt 

Note: la ligne peut trouver des faux positifs si vous avez des sous-domaines, par exemple: mail.com.nz

Il peut y avoir des noms de domaine avec des tirets ou des chiffres.
-i oblige egrep à correspondre indépendamment de l’affaire.

 egrep -i "^[a-z0-9-]{4}\.com$" name.txt > names_new.txt