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