Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1527 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Substitution de chaine de caractère à l'aide de sed

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Substitution de chaine de caractère à l'aide de sed

n°1118053
ismaoul
Posté le 02-03-2009 à 16:43:22  profilanswer
 

Bonjour,
 
Je souhaite faire une substitution de chaine de caractères à l'aide de la commande SED.
Je suis sous HPUX.
 
Voici un exemple de ma chaine de départ :  
aaaaaa;rrrr;ggggg;tttt;"erererere;ererere";rororororo
 
Je voudrais pouvoir remplacer à l’aide de la commande sed et d'expressions régulières le ';' entre double quote par un '_' par exemple.
 
Le ';'à remplacer se trouve toujours entre double quote, je dois uniquement remplacer celui la car les autres servent à délimiter des champs.
L’utilisation de sed est privilégiée car cela permet de l’intégrer à un programme shell.
 
Ainsi ma chaine d’arrivé après substitution doit ressembler à cela :  
aaaaaa;rrrr;ggggg;tttt;"erererere_ererere";rororororo
 
Merci d'avance pour ceux qui peuvent m'aider.


Message édité par ismaoul le 02-03-2009 à 16:47:31
mood
Publicité
Posté le 02-03-2009 à 16:43:22  profilanswer
 

n°1118064
Aiua
PSN : Aiua / GT : Aiua42
Posté le 02-03-2009 à 17:31:38  profilanswer
 

s/"([^"]*);([^"]*)"/"\1_\2"/
de tête, faut peut être mettre des \ devant les parenthèses et ça t'enlèvera qu'un ; par bloc entre guillements, faut l'adapter si tu veux que ça en remplace plusieurs
 
si t'as jamais fait de regexp :
entre parenthèse ça sert à récupérer un bloc (qui sera replacé avec \1,\2, etc.)
[^"] ça veut dire n'importe quel caractère sauf "
* ça veut dire 0 ou n occurences


---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.
n°1118157
ismaoul
Posté le 03-03-2009 à 09:15:32  profilanswer
 

Merci pour votre réponse,  
 
Malheureusement lorsque j'exécute la commande j'ai un erreur.
J'ai essayé de mettre des "\" devant les parenthèses comme vous le suggérer mais cela ne fonctionne pas non plus.
 
Si jamais quelqu'un d'autre à une idée je suis preneur.  :)  
 
Merci

n°1118171
Combi_A_Ve​ndre
Posté le 03-03-2009 à 10:19:38  profilanswer
 

Bonjour,
 
Rajoute des "\" devant les parenthèses :
# sed 's/"\([^"]*\);\([^"]*\)"/"\1_\2"/' fichier.txt
 
vw


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
n°1118177
ismaoul
Posté le 03-03-2009 à 10:48:04  profilanswer
 

Merci Combi_A_Vendre,
 
Votre solution marche, par contre si j'ai la chaine suivante  
"aaaaaa";"rrrr";"ggggg";"tttt";"erererere;ererere";"rororororo"
lorsque j'applique la commande s/"([^"]*);([^"]*)"/"\1_\2"/ j'obtient le résultat suivant :  
"aaaaaa"_"rrrr";"ggggg";"tttt";"erererere;ererere";"rororororo"
 
Que faut t'il modifier dans la commande sed afin que uniquement le ";" contenu dans la chaine "erererere;ererere"  
soit remlpacé par un "_" ?  
 
Merci d'avance

n°1118209
Aiua
PSN : Aiua / GT : Aiua42
Posté le 03-03-2009 à 11:37:49  profilanswer
 

# sed 's/"\([^"]+\);\([^"]+\)"/"\1_\2"/' fichier.txt
 
ça forcera qu'il y ait au moins 1 caractère (symbole +) qui ne soit pas " de part et d'autre du ; entre "


---------------
"The pen is mightier than the sword if the sword is very short, and the pen is very sharp." TP. Mes Jeux. Mes Ventes. Groupe HFR sur PlayFire.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Substitution de chaine de caractère à l'aide de sed

 

Sujets relatifs
Longueur maximale d'une chaine dans un fichier texteConnaitre longueur chaine maximum
aide installation debianaide branchement multi emtec r700 500 GO
Probleme de police de caractere avec wine[SHELL] Insertion chaine de caractères
Aide à l'installation de Syslog-ng + php-syslog-ng[Résolu] Besoin d'aide : récupérer fichier sur un serveur
Aide pour une commande AWK (ou SED) (ou autre) 
Plus de sujets relatifs à : Substitution de chaine de caractère à l'aide de sed


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR