Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/08/2011, 11h35   #1
Membre du Club
 
Avatar de Michel38
 
Inscription : juin 2005
Messages : 145
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2005
Messages : 145
Points : 46
Points : 46
Envoyer un message via ICQ à Michel38
Par défaut [shell unix] Commande sed

Bonjour à tous,

Je cherche à faire une commande sed du style :
Code :
1
2
sed -e "s/(\"bin5\")/\"bin5\"/"    < fich_tmp1 > fich_tmp2
Cette commande marche, il n'y a pas de problème.

Par contre, ce que je voudrais faire à partir de cette commande, c'est une substitution d'une chaîne variable.
Je m'explique, dans l'exemple ci-dessus je fais une substitution d'une chaîne ( "bin5" ) par "bin5". Comme vous le voyez c'est pour supprimer les parenthèses de la chaîne.
Et je voudrais généraliser cette commande pour qu'elle s'effectue quelle que soit le nombre après bin.

Donc qu'un ( "bin5" ) devienne "bin5"
mais aussi qu'un ( "bin23" ) devienne "bin23"
Etc...

Quelqu'un aurait une petite idée ?
Merci d'avance.

Michel
Michel38 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/08/2011, 15h06   #2
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
sed 's/(\( "bin[[:digit:]]*" \))/\1/g'
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 31/08/2011, 15h13   #3
Membre du Club
 
Avatar de Michel38
 
Inscription : juin 2005
Messages : 145
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2005
Messages : 145
Points : 46
Points : 46
Envoyer un message via ICQ à Michel38
Tout simple :
Code :
sed -e "s/( \"\(bin.*\)\" )/\"\1\"/" < fich.tmp1 > fich.tmp2
Il suffisait de bien chercher...
Michel38 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 31/08/2011, 15h15   #4
Membre du Club
 
Avatar de Michel38
 
Inscription : juin 2005
Messages : 145
Détails du profil
Informations personnelles :
Âge : 43
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : juin 2005
Messages : 145
Points : 46
Points : 46
Envoyer un message via ICQ à Michel38
Citation:
Envoyé par zipe31 Voir le message
Salut,

Code :
sed 's/(\( "bin[[:digit:]]*" \))/\1/g'
Plus rapide que moi... merci quand même j'ai trouvé...
Michel38 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h37.


 
 
 
 
Partenaires

Hébergement Web