Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 sad

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 smile

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