sed supprimer tout jusqu'au premier point inclus s'il y a plus d'un point sur cette ligne et faire cela pour l'ensemble du fichier.
Avant sed :
akamai.com
cdnjs.cloudflare.com
com.cdn.cloudflare.net
Après sed :
akamai.com
cloudflare.com
cdn.cloudflare.net
Réponse acceptée :
$ sed '/\..*\./s/^[^.]*\.//' file
akamai.com
cloudflare.com
cdn.cloudflare.net
Le sed le script correspond d'abord aux lignes qui contiennent au moins deux points en utilisant l'expression régulière \..*\. (aurait pu aussi s'écrire [.].*[.] ). Pour les lignes correspondant à cela, une substitution qui supprime tout jusqu'au premier point inclus est effectuée.
Utiliser awk , étant un peu long par rapport à ce qui précède :
$ awk -F '.' -vOFS='.' 'NF > 2 { n=split($0, a); $0=""; for (i=2;i<=n;++i) $(NF+1)=a[i] } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net
Ici, chaque fois qu'il y a plus de deux champs délimités par des points, nous divisons la ligne actuelle en points, puis recréons l'enregistrement actuel à partir de cela, en sautant le premier champ. Le 1 de fin à la fin provoque l'impression de chaque ligne (modifiée ou non).
awk plus court de la même manière que le sed solution :
$ awk -F '.' 'NF > 2 { sub("^[^.]*\.", "") } 1' file
akamai.com
cloudflare.com
cdn.cloudflare.net