[AWK|SED] exclure une chaine de caractère

Bonsoir,

Je cherche à exclure une chaîne … figurant après le séparateur suivant : .
Soit la chaîne suivante ‘aaa.bbb’, je ne veux que ‘aaa’ ?

Avec awk, il suffit de faire : echo “aaa.bbb” | awk -F “.” ‘{print $1}’

Maintenant ma chaîne est construite ainsi : ‘aaa.bbb.ccc’ mais je veux récupérer ‘aaa.bbb’ …

En fait, le propos est de récupérer tout caractère avant l’ultime '.'
La commande ci-dessus ne suffit puisque nous récupérons que ‘aaa’ et non pas ‘aaa.bbb’ ; or, je tiens à récupérer tout ce qui est avant le dernier point, s’il y en a plusieurs.

Quid ?

Je ne suis pas un expert avec [mono]awk[/mono]…
En revanche avec [mono]sed[/mono] ça pourrais te donner ceci par exemple :

En gros la regexp [mono].[[:alnum:]]*$[/mono] détecte la dernière partie de la chaine et ensuite on la supprime.

Sinon, tu peux aussi utiliser l’expression suivante : [mono]^[[:print:]].[[:alnum:]]$[/mono]
Ou [mono][[:print:]]
[/mono] correspond à la partie que tu veux garder et [mono].[[:alnum:]][/mono] à celle que tu veux supprimer.
Après, reste à l’exploiter, ce que je ne sais pas faire avec [mono]awk[/mono], mais qui pourrais donner ceci avec [mono]sed[/mono] :

Y’a des fois où je me demande si je ne suis pas un véritable crétin, un “âne baté” … enfin.

@Nemesis98, je te remercie ; en effet il me suffit de faire … echo "aaa.bbb.ccc7" | sed "s/\.[[:alnum:]]*$//g"

Parfois, on cherche vraiment les complications, tsss … Merci à toi :smiley: