Bonjour.
j'ai une expression contenant des lettres et des numéros :
MyExpression="2008Y03M12D"
Comment enlever les lettres pour n'avoir que "20080312" ??
Merci
Bonjour.
j'ai une expression contenant des lettres et des numéros :
MyExpression="2008Y03M12D"
Comment enlever les lettres pour n'avoir que "20080312" ??
Merci
utilises sed
par exemple :
echo 444t4i44 | sed -e "s/[a-z]\{1\}//"
remplace la première suite de 1 lettre par rien
ce qui donne
4444i44
....^remplacement de t par "rien"
s= substitute prend le paramètre g pour le faire de façon globale et pas que sur la première occurrence.
de plus tu peux isoler un bout de chaine par \(.......\)
Maintenant à toi de jouer pour trouver comment le faire (avant d'aller voir la solution plus bas dans le message)....
pour t'habituer aux regexps :
http://www.shellunix.com/regexp.html
des exemples plus concrets :
http://sed.sourceforge.net/sed1line_fr.html
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 obelix(root/root)[PREC]/root>echo "2008Y03M12D" | sed "s/\([A-Za-z]\)//g" 20080312 obelix(root/root)[PREC]/root>
Jolie reponse, moi je propose ca mais c'est la meme chose :
Tout ce qui n'est pas un chiffre je les remplace par rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [lanfeust@waha ~]$ echo "2008Y03M12D" | sed -e 's/[^0-9]//g' 20080312 [lanfeust@waha ~]$
oui j'ai décomposé juste pour etre "clair"
avec GNU sed la syntaxe simplifiée marche dans ce cas précis.
bon merci pour les reponses et pour les liens surtout...
j'ai trouvé une maniére encore plus simple de faire, en utilisant tr :
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "2008Y03M12D" | tr -d 'a-zA-Z'
et le tour est joué..
Partager