Bonjour à tous,
J'aimerai parser l'adresse foo.utbm.fr et simplement récupérer le mot foo... Comment puis-je m'y prendre en shell script (sh) ?
Merci d'avance !
Version imprimable
Bonjour à tous,
J'aimerai parser l'adresse foo.utbm.fr et simplement récupérer le mot foo... Comment puis-je m'y prendre en shell script (sh) ?
Merci d'avance !
man sed
man expr
Ok, j'ai tenté ca :
et ca me renvoit 0. Je pense qu'il faut lui dire d'exclure le . entre les deux parenthèses, mais comment fait-on pour faire des exclusions dans un .* ?Code:
1
2
3 a=pouyou.foo.com expr $a : '(.*)\..*'
man expr
Probablement avec "[^.]*"
et ça renvoie pouyouCode:
1
2 gawk 'BEGIN {FS="."; OFS="."}{print $1}' < pouyou
le fichier pouyou contient pouyou.foo.com
avec print $2 tu choppes foo
avec print $3 tu choppes com
J'ai essayé, mais ca ne marche toujours pas :
ggnore, tu peux m'expliquer rapidement ta commande (notemment les FS et OFS)... sinon, te prend pas la tête, je peux fouiller la man aussi.Code:
1
2
3
4
5 bash-2.05b$ a=foo.bar.com bash-2.05b$ expr $a : '([^.]*)\..*' 0 bash-2.05b$
http://www.shellunix.com/awk.html
FS = séparateur de champs en entrée
OFS = séparateur de champs en sortie
ma ligne de commande ne marche pas pour toi ?
le problème avec awk, c'est que je crois qu'il faut un fichier en entrée.
expr a l'air de renvoyer uniquemen 0,1 ou 2
ta variable est peut être modifiée ? peut être qu'un echo $a serait intéressant
1. Merci pour le lien.
2. Ok pour les informations
3. Si, ta commande marche bien, je l'ai "amméliorée" pour ne pas avoir à passer par un fichier :
Sinon, non la variable n'est pas modifiée avec expr... je pense qu'il renvoit 0 parce justement il ne trouve rien.Code:
1
2
3 bash-2.05b$ echo "pouyou.yaoo.com" | gawk 'BEGIN {FS="."; OFS="."}{print $1}' pouyou
N'oublie pas de cliquer sur résolu :D
Avec epxr, les parenthèses doivent être banalisées
Sinon, il reste le bon vieux sedCode:expr pouyou.foo.com : '\([^.]*\)'
Code:echo pouyou.foo.com |sed 's#\([^.]*\).*#\1#'
Ok, merci !