#1 Le 06/06/2008, à 14:57
- Elloyeen
Debutant en bash - Decouper une chaine
Bonjour,
Je voudrais découper un chaine de caractére qui est du type user="nomuser" dans mon script shell afin de recuper le texte comprit entre des ". J'ai donc fait :
cat $monfichier | grep user | cut -d"
Mais j'ai l'erreur Syntax error: Unterminated quoted string.
Merci
Hors ligne
#2 Le 06/06/2008, à 15:01
- Elloyeen
Re : Debutant en bash - Decouper une chaine
Je viens de resoudre mon probléme tous seul, desolé d'avoir posté pour rien
Hors ligne
#3 Le 06/06/2008, à 15:11
- herberts
Re : Debutant en bash - Decouper une chaine
cat nom_du_fichier | grep user | cut -d \" -f 2
Attention, pas de $ devant le nom du fichier
Ensuite il faut mettre un espace entre le -d et le délimiteur choisi (ici ")
En plus, dans ce cas, " étant un caractère spécial, il faut l'échapper avant, avec un \.
Pour finir, le -d permet de choisir le délimiteur, mais il faut aussi choisir quel champ afficher, avec le -f (2 car c'est le deuxième champ, le premier étant user=)
edit : bon, content que tu es résolu ton problème
Dernière modification par herberts (Le 06/06/2008, à 15:12)
Hors ligne
#4 Le 06/06/2008, à 15:54
- mekare
Re : Debutant en bash - Decouper une chaine
ou en plus léger (grep c'est lourd) et sans tunnel (un seul programme) :
awk -F"\"" '{ if ($1="user") print $2}' mon_fichier
Hors ligne
#5 Le 06/06/2008, à 22:12
- Elloyeen
Re : Debutant en bash - Decouper une chaine
Merci beaucoup pour votre aide.
J'aurais une deuxieme question si maintenant je veux modifier la chaine de caractére contenu entre mes ". Comment puis-je faire ?
Dernière modification par Elloyeen (Le 06/06/2008, à 22:16)
Hors ligne
#6 Le 06/06/2008, à 23:39
- herberts
Re : Debutant en bash - Decouper une chaine
tu veux le modifier comment ?
Hors ligne
#7 Le 07/06/2008, à 09:07
- Totor
Re : Debutant en bash - Decouper une chaine
utilises sed
sed -i "s/nom=\"nomUser\"/nom=\"nouveauNom\"/" nomFichier
le -i permet de remplacer directement dans le fichier.
je suppose que tu as des variables, donc ça ressemble plutôt à ça :
fichier="monFichier"
ancienNom="`sed "s/nom=\"\(.*\)\"/\1/" ${fichier}`"
nouveauNom="nouveauNom"
sed -i "s/nom=\"${ancienNom}\"/nom=\"${nouveauNom}\"/" ${fichier}
de même, ça remplace la 1ère occurence de nom="nomUser" dans le fichier....
Dernière modification par Totor (Le 07/06/2008, à 09:07)
-- Lucid Lynx --
Hors ligne