Supprimer caractère avant le dernier point d'une ligne [Résolu/Fermé]

Signaler
-
 M.Burke -
Bonjour,

Tout est dans le titre :)

Je suis à la recherche d'une commande qui lit chaque ligne d'un fichier, et supprime tous les caractères avant le dernier "." contenu dans la ligne.

Merci d'avance, je suis une quiche en unix... :(

7 réponses

Messages postés
35875
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
29 novembre 2020
5 688
Salut,

Le point est le dernier caractère sur la ligne ?
Ou le point peut être n'importe où ?

Un exemple concret AVANT => APRÈS serait le bienvenu.
Avant:

\\192.168.2.11\blabla\blibli\blou.blou\lefichier.ext

Après:

".ext" ou "ext"

Ensuite les trier par la première lettre via un sort.
Messages postés
35875
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
29 novembre 2020
5 688
$ echo "${var}"
\\192.168.2.11\blabla\blibli\blou.blou\lefichier.ext

$ echo "${var##*.}"
ext

$ echo "${var}" | sed 's/.*\.//'
ext

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 217
sed 's/.*\.//'
fonctionne chez moi.
Merci, je teste ça demain matin du coup ;)

Si vous avez d'autres idées n'hésitez pas! :)
Messages postés
35875
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
29 novembre 2020
5 688
$ echo "${var}" | awk -F'.' '{ print $NF }'
ext
Messages postés
35875
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
29 novembre 2020
5 688
$ echo "${var}" | grep -Po '.*\.\K.*'
ext
Messages postés
18239
Date d'inscription
lundi 15 janvier 2007
Statut
Non membre
Dernière intervention
29 novembre 2020
5 106
hello
$ var=\\192.168.2.11\blabla\blibli\blou.blou\lefichier.ext
$ IFS=. t=($var)
$ echo ${t[${#t[@]}-1]}
ext
$ IFS=. set -- $var
$ echo ${!#}
ext
Merci les amis!

Ca marche :)
Commande sed --> très efficace!